ホームページ > Java > &#&チュートリアル > Java を使用して JAR ファイル内のファイルをリストするにはどうすればよいですか?

Java を使用して JAR ファイル内のファイルをリストするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-20 01:39:10
オリジナル
240 人が閲覧しました

How Can I List Files Inside a JAR File Using Java?

Java を使用した JAR 内のファイルのリスト表示

JAR アーカイブを使用する場合の一般的なタスクの 1 つは、JAR アーカイブに含まれるファイルのリストを表示することです。これは、特定のファイルの抽出やアーカイブの内容のインベントリの作成など、さまざまな目的に役立ちます。

Java API の使用

Java は、ZIP ファイルを処理するための広範なクラスのセットを提供します。 JAR アーカイブを含む。 ZipInputStream クラスを使用すると、JAR ファイル内のエントリを反復処理し、そのメタデータにアクセスできます。

JAR 内のファイルを一覧表示するには、次の手順に従います。

  1. CodeSource オブジェクトを取得します。 JAR 内で実行されているクラスの場合。これは、Class オブジェクトの getProtectionDomain() メソッドと getCodeSource() メソッドを使用して実行できます。
  2. getLocation() メソッドを使用して、CodeSource を URL オブジェクトに変換します。
  3. から ZipInputStream オブジェクトを作成します。 URL。
  4. の getNextEntry() メソッドを呼び出して、JAR 内のエントリを反復処理します。 ZipInputStream.
  5. 各エントリについて、名前が目的のパターンまたは基準と一致するかどうかを確認します。

コード例

次のコードは、すべてのエントリをリストする例を示しています。 JAR 内のファイル:

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;
    }
    System.out.println(e.getName());
  }
} else {
  System.out.println("JAR not found");
}
ログイン後にコピー

Java 7機能強化

Java 7 では、ZIP ファイルの操作プロセスを簡素化する新機能が導入されました。 FileSystem クラスを使用すると、ZIP ファイルを読み取り専用ファイル システムとしてマウントできます。これにより、標準 Java I/O ライブラリを使用して、JAR ファイルの内容に移動して一覧表示できるようになります。

次のコードは、FileSystem クラスを使用して JAR 内のファイルを一覧表示する例を示しています。

Path jarPath = Paths.get("/path/to/my.jar");
FileSystem fs = FileSystems.newFileSystem(jarPath, null);
Path root = fs.getPath("/");
Files.walk(root)
    .filter(path -> path.toString().startsWith("path/to/your/dir/"))
    .forEach(System.out::println);
ログイン後にコピー

このコードは、ファイルとディレクトリを操作するための高レベル API を提供する Files クラスを使用して、JAR ファイルのルート ディレクトリを調べ、ファイルをフィルタリングして除外します。希望の基準と一致しません。

以上がJava を使用して JAR ファイル内のファイルをリストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート