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:[path] test.zip myjar.jar(宛先はすでに存在します). 。 MVの代わりにCPを使用する場合、エラーは path] test.zip myjar.jar([path] test.zip myjar.jarに含まれる)
問題はまた、truezipがzips and jarをディレクトリとアーカイブの両方として識別しているため、ISDirectory()を実行すると、これが成功し、listFiles()を実行すると、内部に含まれるすべてのファイルを返します。ファイルは、すべてのJAR/zipコンテンツをディレクトリとしてコピーすることを再帰的に引き起こします。
これらのアーカイブファイルを拡張せずに抽出する正しい方法は何ですか?
解決
アーカイブファイルをディレクトリに抽出することは、1つのメソッド呼び出しで実行できます。
TFile archive = new TFile("archive.zip");
TFile directory = new TFile("directory");
TFile.cp_rp(archive, directory, TArchiveDetector.NULL, TArchiveDetector.NULL);
トリックは、ディレクトリツリーを横断するときにtarchivedetector.nullを使用することです。
所属していません StackOverflow