NIO2를 사용하여 소스 디렉토리의 내용에서 zip 파일을 생성 중입니다. 나는 ZipFileSystem을 사용하고 있는데, 먼저 인스턴스를 얻은 다음 경로를 생성해야합니다. 생성 된 경로는 Files.createDirectory(pathInZip)
또는 Files.copy(sourcePath, destPathInZip)
을 사용하여 zip 파일에 항목을 만드는 데 사용할 수 있습니다. 이것은 잘 작동하지만 내가 피하려는 uglyness의 순간이 :Java nio2 : toString에 의존하지 않고 파일 시스템 간 경로 객체를 매핑하십시오.
// 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)를 갖는 것은 매우 쉬운 것처럼 보일 것입니다.
분명히 그들 사이의 경로를 매핑하는 일반적인 작업으로 생각하지 않았다 파일 시스템. – irreputable
은 감독처럼 보입니다. 그들이 샘플 처리 방법을보기 위해 샘플 zip 구현으로 넘어갈 것입니다. – tucuxi