У меня есть этот код, который читает все файлы из каталога.
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 переменной длины.)
РЕДАКТИРОВАТЬ
Итак, я предполагаю, что моей главной проблемой будет: как узнать имя файла 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
Прямо сейчас я могу загрузить, например, "images / image01.png", используя:
ImageIO.read(this.getClass().getResource("images/image01.png));
Но только потому, что я знаю имя файла, в остальном мне приходится загружать их динамически.