[解決済み] JARファイル内のファイルを一覧表示するには?
2022-06-23 18:46:55
質問
私は、ディレクトリからすべてのファイルを読み取るこのコードを持っています。
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" が "hardcoded" なので動作しますが、JAR ファイル内の画像の数は 10 から 200 までの可変長です)。
EDIT
というわけで、私の一番の悩みは どのようにして JARファイル名 を知る方法?
を使用してそれを読み取ることができることを認めます。
java.util.Zip
.
私のStructureはこんな感じです。
のようなものです。
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));
しかし、ファイル名がわかっているだけで、残りは動的に読み込まなければなりません。
どのように解決するのですか?
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
ZipInputStream zip = new ZipInputStream(jar.openStream());
while(true) {
ZipEntry e = zip.getNextEntry();
if (e == null)
break;
String name = e.getName();
if (name.startsWith("path/to/your/dir/")) {
/* Do something with this entry. */
...
}
}
}
else {
/* Fail... */
}
なお、Java 7では、このように
FileSystem
を JAR (zip) ファイルから作成し、NIO のディレクトリウォーキングとフィルタリング機構を使用して検索します。これにより、JAR や "exploded" ディレクトリを処理するコードをより簡単に書くことができるようになります。
関連
-
プロローグでのコンテンツは禁止されています
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] ファイルへの追記はどのように行うのですか?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
java の例外が発生しました java
-
Dateが型に解決できない問題を解決する
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
自動配線された依存性のインジェクションに失敗しました。
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み] Javaでディレクトリとそのサブディレクトリにあるファイルを反復処理するにはどうしたらいいですか?