作为Convert .tar.gz file to .zip using TrueZip?的后续,如何使用TrueZip将一个压缩文件的内容复制到另一个压缩文件中?当我引用:
TPath sourceFile = new TPath("c:/foo.zip");
TPath targetFile = new TPath("c:/bar.jar");
Files.copy(sourceFile, targetFile, StandardCopyOption.COPY_ATTRIBUTES);我得到:
java.io.FileNotFoundException: C:\foo.zip (expected FILE - is DIRECTORY)
at de.schlichtherle.truezip.nio.file.TFileSystemProvider.copy(TFileSystemProvider.java:397)
at de.schlichtherle.truezip.nio.file.TFileSystemProvider.copy(TFileSystemProvider.java:364)
at java.nio.file.Files.copy(Files.java:1219)问题是,我知道c:/foo.zip是一个现有的文件,而不是目录。
发布于 2012-02-18 03:42:53
回答我自己的问题。请注意,我通过尝试和错误发现了这一点,所以我可能在以下几点上错了:
Files.copy(archive, archive)实际上是试图将一个目录复制到另一个目录。创建recursively.Files.copy(Path, Path)被视为目录--我们只是将文件从一个目录复制到另一个目录:。
Files.walkFileTree(sourceFile, new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException
{
Files.copy(file, targetFile.resolve(sourceFile.relativize(file)),
StandardCopyOption.COPY_ATTRIBUTES);
return super.visitFile(file, attrs);
}
});是的,您可以使用:targetFile.getFileSystem().sync(FsSyncOptions.UMOUNT);
https://stackoverflow.com/questions/9338190
复制相似问题