Ho questo codice che legge tutti i file da una directory.Come elenco i file all'interno di un file JAR?
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}
});
Funziona alla grande. 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 fare è, per elencare tutte le immagini all'interno del mio file JAR, in modo che io possa caricare con:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(Quello funziona perché il "companylogo" è "hardcoded" ma il numero di immagini all'interno del file JAR potrebbe essere da 10 a 200 di lunghezza variabile)
EDIT
Quindi credo che il mio problema principale sarebbe:. Come conoscere il nome del file JAR dove vive la mia classe principale?
Concesso Potrei leggerlo utilizzando java.util.Zip
.
mia struttura è simile a questo:
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 per 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.
Solo un pensiero - perchè non immagini zip/vaso in un file separato e leggere le voci in essa dalla classe in un altro vaso? –
Perché richiederebbe un passaggio "extra" per la distribuzione/installazione. :(Sai, gli utenti finali – OscarRyz
Beh, potrei sbagliarmi, ma i barattoli possono essere incorporati in altri barattoli La soluzione di packaging one-jar (TM) http://www.ibm.com/developerworks/java/library/j -onejar/funziona su questa base.Tranne che nel tuo caso non hai bisogno dell'abilità di caricare le classi. –