Java で ZIP ファイルにファイルを追加: 効率的な方法を調べる
war ファイルを扱うときは、コンテンツを抽出して追加するのが一般的です。新しいファイルを作成し、新しい war ファイルを作成します。ただし、このプロセスには展開と再圧縮が必要なため、時間がかかることがあります。
検討すべき効率的な代替手段の 1 つは、ファイルを war ファイルに直接追加することです。 Java ドキュメントにはこれに関する明示的なガイダンスが記載されていませんが、この機能を有効にする外部ライブラリがあります。
TrueZip および類似のライブラリ
TrueZip は人気のある Java ライブラリです。 zipファイルを操作するためのものです。 zip アーカイブへのファイルの追加をサポートしているため、説明したシナリオに適したソリューションになります。 TrueZip を使用した例を次に示します。
ZipFile zipFile = new ZipFile("test.war"); zipFile.addFile("new.txt", new File("new.txt")); zipFile.close();
Java 7 ジップ ファイル システム機能
Java 7 では、Zip ファイル システム API は、アクセスおよび操作のためのネイティブ メカニズムを提供します。 zip ファイルをファイル システムとして使用します。これにより、ファイル全体を再パッケージすることなく、zip 内のファイルを直接書き込んだり変更したりすることができます。
Map<String, String> env = new HashMap<>(); env.put("create", "true"); Path path = Paths.get("test.zip"); URI uri = URI.create("jar:" + path.toUri()); try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { Path nf = fs.getPath("new.txt"); try (Writer writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, StandardOpenOption.CREATE)) { writer.write("hello"); } }
Java 7 Zip ファイル システムは、ファイルを zip アーカイブに追加するための強力かつ効率的なアプローチです。ただし、古い Java バージョンの場合は、TrueZip などの外部ライブラリでこの機能のギャップを埋めることができます。
以上がJava で ZIP ファイルにファイルを効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。