ディレクトリからすべてのファイルを読み取るこのコードがあります。
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
それは素晴らしい働きをします。ディレクトリ「text_directory」の「.txt」で終わるすべてのファイルで配列を埋めます。
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));
しかし、ファイル名を知っているという理由だけで、残りの部分については動的にロードする必要があります。