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 Files
API を使用してファイルを作成およびコピーします。
上記/some/directory
により、zip ファイルのルートにディレクトリ構造が作成され、そのディレクトリには圧縮されたファイルが含まれます。