我正在使用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:java.io.IOException:[path]\test.zip\Myjar.jar(目标已存在).如果我使用cp而不是mv,那么错误是[path]\test.zip\Myjar.jar(包含在[path]\test.zip\Myjar.jar中)
问题似乎也是TrueZip将zip和jar识别为目录和档案,因此当对它们执行isDirectory()时,这会成功,并且执行listFiles()会返回其中包含的所有文件,因此运行cp()on文件递归导致所有jar/zip内容被复制为目录.
提取这些存档文件而不扩展它们的正确方法是什么?
可以使用一个方法调用将存档文件提取到目录:
TFile archive = new TFile("archive.zip");
TFile directory = new TFile("directory");
TFile.cp_rp(archive, directory, TArchiveDetector.NULL, TArchiveDetector.NULL);
Run Code Online (Sandbox Code Playgroud)
诀窍是在遍历目录树时使用TArchiveDetector.NULL.
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |