Mam ten kod, który czyta wszystkie pliki z katalogu.
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
Działa świetnie. Wypełnia tablicę wszystkimi plikami kończącymi się na „.txt” z katalogu „text_directory”.
Jak można odczytać zawartość katalogu, w podobny sposób w pliku JAR?
To, co naprawdę chcę zrobić, to wymienić wszystkie obrazy w moim pliku JAR, aby móc je załadować za pomocą:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(To działa, ponieważ „CompanyLogo” jest „zakodowane na stałe”, ale liczba obrazów w pliku JAR może wynosić od 10 do 200 zmiennej długości).
EDYTOWAĆ
Więc myślę, że moim głównym problemem byłoby: Jak poznać nazwę pliku JAR, w którym mieszka moja główna klasa?
Przyznane, że mogłem to przeczytać za pomocą java.util.Zip
.
Moja struktura wygląda tak:
Oni są jak:
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
W tej chwili mogę załadować na przykład plik „images / image01.png” za pomocą:
ImageIO.read(this.getClass().getResource("images/image01.png));
Ale tylko dlatego, że znam nazwy plików, do reszty muszę je ładować dynamicznie.