У мене є цей код, який читає всі файли з каталогу.
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
Зараз я можу завантажити, наприклад, "images / image01.png", використовуючи:
ImageIO.read(this.getClass().getResource("images/image01.png));
Але тільки тому, що я знаю ім'я файлів, для решти мені доведеться їх динамічно завантажувати.