首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TrueZip TPath复制文件?

如何使用TrueZip TPath复制文件?
EN

Stack Overflow用户
提问于 2012-02-18 03:14:02
回答 1查看 644关注 0票数 1

作为Convert .tar.gz file to .zip using TrueZip?的后续,如何使用TrueZip将一个压缩文件的内容复制到另一个压缩文件中?当我引用:

代码语言:javascript
复制
TPath sourceFile = new TPath("c:/foo.zip");
TPath targetFile = new TPath("c:/bar.jar");
Files.copy(sourceFile, targetFile, StandardCopyOption.COPY_ATTRIBUTES);

我得到:

代码语言:javascript
复制
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是一个现有的文件,而不是目录。

  1. 为什么要得到这个错误?
  2. 如何使用TPaths将一个ZIP文件转换成JAR文件?
  3. TPath需要卸载吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-18 03:42:53

回答我自己的问题。请注意,我通过尝试和错误发现了这一点,所以我可能在以下几点上错了:

  1. 档案被视为目录。Files.copy(archive, archive)实际上是试图将一个目录复制到另一个目录。创建recursively.
  2. Now是为了复制单个文件,而不是复制我们所知道的目录-- Files.copy(Path, Path)被视为目录--我们只是将文件从一个目录复制到另一个目录:

代码语言:javascript
复制
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);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9338190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档