繁体   English   中英

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

[英]TrueZip - How to decompress inner jar/zip files without expanding them as directories?

我正在使用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:[path] \\ 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM