У меня есть этот код, который читает все файлы из каталога.Как перечислить файлы внутри JAR-файла?
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}
});
Он отлично работает. Он заполняет массив всеми файлами, которые заканчиваются на «.txt» из каталога «text_directory».
Как я могу прочитать содержимое каталога аналогичным образом в пределах файла JAR?
Так что я действительно хочу сделать это, чтобы получить список всех изображений в моем файле JAR, так что я могу загрузить их:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(Это один работает, потому что «CompanyLogo» является «жёстко» но количество изображений внутри файла JAR может быть от 10 до 200 переменной длины)
EDIT
Так что я думаю, что моя главная проблема будет:. Как узнать имя файла JAR, где живет мой основной класс?
Предоставлено, что я могу прочитать его, используя java.util.Zip
.
Моя структура такова:
Они подобны:
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
Прямо сейчас я могу загрузить, например, "картинки/image01.png" с помощью:
ImageIO.read(this.getClass().getResource("images/image01.png));
Но только потому, что я знаю имя файла, для остальных я должен загружать их динамически.
Только мысль - почему бы не молния/баночка изображения в отдельный файл и читать записи в него из своего класса в другом банке? –
Потому что для распределения/установки потребуется дополнительный шаг. :(Знаете, конечные пользователи. – OscarRyz
Ну, я могу ошибаться, но банки могут быть встроены в другие банки. Однобарабанное (TM) упаковочное решение http://www.ibm.com/developerworks/java/library/j -onejar/работает на этой основе.Кроме того, в вашем случае вам не требуются классы нагрузки. –