TrueZip-ディレクトリとして拡張せずに内側のjar/zipファイルを減圧する方法は?

StackOverflow https://stackoverflow.com/questions/6393090

  •  29-10-2019
  •  | 
  •  

質問

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を使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top