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)というエラーで失敗します。mv の代わりに cp を使用すると、エラーは[path]\test.zip\Myjar.jar ([path]\test.zip\Myjar.jar に含まれる) になります。
問題は、TrueZip が zip と jar をディレクトリとアーカイブの両方として識別することでもあるようです。したがって、それらに対して isDirectory() を実行すると、これは成功し、listFiles() を実行すると、その中に含まれるすべてのファイルが返されるため、cp() を実行するとfiles を再帰的に使用すると、すべての jar/zip コンテンツがディレクトリとしてコピーされます。
これらのアーカイブ ファイルを展開せずに抽出する正しい方法は何ですか?