我正在使用 NIO2 从源目录的内容创建一个 zip 文件。我正在使用ZipFileSystem,为此我首先必须获得一个实例,然后生成路径。然后可以使用生成的路径在 zip 文件中使用Files.createDirectory(pathInZip)
或创建条目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()
?看起来很丑。我总是可以遍历一条路径,逐步构建另一条路径……但是拥有一个 FileSystem.getPath(Path anotherPath) 似乎很容易,以至于我花时间写这篇文章。