Ho questo codice che legge tutti i file da una directory.
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
Funziona benissimo. Riempie l'array con tutti i file che terminano con ".txt" dalla directory "text_directory".
Come posso leggere il contenuto di una directory in modo simile all'interno di un file JAR?
Quindi quello che voglio davvero fare è elencare tutte le immagini all'interno del mio file JAR, così posso caricarle con:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(Quello funziona perché "CompanyLogo" è "hardcoded" ma il numero di immagini all'interno del file JAR potrebbe essere compreso tra 10 e 200 di lunghezza variabile.)
MODIFICARE
Quindi immagino che il mio problema principale sarebbe: come conoscere il nome del file JAR in cui vive la mia classe principale?
Certo che potrei leggerlo usando java.util.Zip
.
La mia struttura è così:
Sono come:
my.jar!/Main.class
my.jar!/Aux.class
my.jar!/Other.class
my.jar!/images/image01.png
my.jar!/images/image02a.png
my.jar!/images/imwge034.png
my.jar!/images/imagAe01q.png
my.jar!/META-INF/manifest
In questo momento sono in grado di caricare ad esempio "images / image01.png" utilizzando:
ImageIO.read(this.getClass().getResource("images/image01.png));
Ma solo perchè conosco il nome del file, per il resto devo caricarli dinamicamente.