微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TrueZip-如何解压缩内部jar / zip文件而不将其扩展为目录?

如何解决TrueZip-如何解压缩内部jar / zip文件而不将其扩展为目录?

| 我正在使用TrueZip 7创建tzp文件,并使用cp_rp方法一次将所有目录内容添加到tzp文件。 之后,我尝试将tzp文件的所有内容提取到目标目录。但是,调用
zipFile = new TFile(\"test.zip\");
public void extract(TFile file){
  for (TFile iFile : zipFile.listFiles()){
    if(iFile.isDirectory()){
       extract(iFile);
    }else{
       File output = new File(iFile.getPath());
       iFile.mv(output);
    }
  }
}
失败并发生错误:java.io.IOException:[路径] \\ test.zip \\ Myjar.jar(目标已经存在)。如果我使用cp而不是mv,则错误为[path] \\ test.zip \\ Myjar.jar(包含在[path] \\ test.zip \\ Myjar.jar中) 问题似乎还在于TrueZip将zip和jars识别为目录和存档,因此对它们执行isDirectory()时,此操作成功完成,并且执行listFiles()返回其中包含的所有文件,因此在上运行cp()文件以递归方式将所有jar / zip内容复制为目录。 提取这些存档文件而不扩展它们的正确方法是什么?     

解决方法

        可以使用一个方法调用将存档文件提取到目录中:
TFile archive = new TFile(\"archive.zip\");
TFile directory = new TFile(\"directory\");
TFile.cp_rp(archive,directory,TArchiveDetector.NULL,TArchiveDetector.NULL);
诀窍是在遍历目录树时使用TArchiveDetector.NULL。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。