NIO2 を使用して、ソース ディレクトリの内容から zip ファイルを作成しています。最初にインスタンスを取得してからパスを生成する必要があるZipFileSystemを使用しています。Files.createDirectory(pathInZip)
生成されたパスを使用して、またはを使用して zip ファイルにエントリを作成できますFiles.copy(sourcePath, destPathInZip)
。これは問題なく動作しますが、回避したい醜い瞬間があります。
// within the SimpleFileVisitor that walks through sourceDirFile
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Path pathInZip = zipFileSystem.getPath(sourceDirPath.relativize(file).toString()); // <-- ?!
Files.copy(file, pathInZip);
return FileVisitResult.CONTINUE;
}
依存せずに、ある FileSystemProvider から別のパスにパスをコピーする方法はありますaPath.toString()
か?. 醜いようです。私はいつでも 1 つのパスを繰り返し、もう 1 つのパスをインクリメンタルに構築することができました。