gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:35:05 26 4
gpt4 key购买 nike

我正在使用 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 (destination exists already)。如果我使用 cp 而不是 mv,则错误是 [path]\test.zip\Myjar.jar(包含在 [path]\test.zip\Myjar.jar 中)

问题似乎还在于 TrueZip 将 zips 和 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。

关于java - TrueZip - 如何解压缩内部 jar/zip 文件而不将它们扩展为目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com