6

Javaを使用してディレクトリ構造をzipファイルに圧縮する方法をいくつか試しました。ZipOutputStreamJava NIO zipを使用するかどうかは関係ありませんFileSystem。空のフォルダーを zip ファイルに追加することはできません。

unix zip を試してみたところ、期待どおりに動作したため、zip 形式の可能性がある問題を破棄しました。

フォルダー内に空のファイルを追加して、少し回避策を講じることもできますが、実際にはそうしたくありません。

Java API を使用して zip ファイルに空のフォルダを追加する方法はありますか?


編集:回答とコメントに基づいて、これは私が得たほとんどの解決策です

ありがとう!

4

1 に答える 1

5

Java NIO を使用すると、これを通常のファイル システムで作業するのと同じくらい簡単に行うことができます。

public static void main(String[] args) throws Exception {
    Path zipfile = Paths.get("C:\\Users\\me.user\\Downloads\\myfile.zip");

    try (FileSystem zipfs = FileSystems.newFileSystem(zipfile, null);) {
        Path extFile = Paths.get("C:\\Users\\me.user\\Downloads\\countries.csv"); // from normal file system
        Path directory = zipfs.getPath("/some/directory"); // from zip file system
        Files.createDirectories(directory);
        Files.copy(extFile, directory.resolve("zippedFile.csv"));
    }
}

myfile.zip指定されたディレクトリ内のファイルを指定すると、呼び出しnewFileSystemによってファイルの種類が検出され (この場合、ほとんどの場合、.zip によって提供されます) ZipFileSystem、. 次に、zip ファイル システムにパス (ディレクトリまたはファイル) を作成し、Java NIO FilesAPI を使用してファイルを作成およびコピーします。

上記/some/directoryにより、zip ファイルのルートにディレクトリ構造が作成され、そのディレクトリには圧縮されたファイルが含まれます。

于 2013-09-24T14:49:28.420 に答える