Eu tenho este código que lê todos os arquivos de um diretório.
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
Funciona muito bem. Ele preenche o array com todos os arquivos que terminam com ".txt" do diretório "text_directory".
Como posso ler o conteúdo de um diretório de maneira semelhante em um arquivo JAR?
Então, o que eu realmente quero fazer é listar todas as imagens dentro do meu arquivo JAR, para que possa carregá-las com:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(Esse funciona porque o "CompanyLogo" é "codificado", mas o número de imagens dentro do arquivo JAR pode ser de 10 a 200 de comprimento variável.)
EDITAR
Portanto, acho que meu principal problema seria: Como saber o nome do arquivo JAR onde mora minha classe principal?
Admito que eu poderia ler usando java.util.Zip
.
Minha estrutura é assim:
Eles são como:
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
No momento, consigo carregar, por exemplo, "images / image01.png" usando:
ImageIO.read(this.getClass().getResource("images/image01.png));
Mas só porque sei o nome do arquivo, quanto ao resto, tenho que carregá-los dinamicamente.