Truezip - Come decomprimere i file jar/zip interni senza espanderli come directory?

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

  •  29-10-2019
  •  | 
  •  

Domanda

Sto creando un file TZP usando Truezip 7 e il metodo CP_RP per aggiungere tutti i contenuti della directory contemporaneamente al file TZP.

Successivamente, sto cercando di estrarre tutti i contenuti del file TZP in una directory di destinazione. Tuttavia, la chiamata:

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);
    }
  }
}

Fallisce con un errore: java.io.ioexception: [Path] test.zip myjar.jar (la destinazione esiste già). Se uso CP invece di MV, allora l'errore è Path] test.zip myjar.jar (contenuto in [Path] test.zip myjar.jar)

Il problema sembra anche essere che Truezip identifichi Zips e barattoli sia come directory che archivi, quindi quando si fa un isDirectory () su di essi, questo ha successo e fare un elenco () restituisce tutti i file contenuti all'interno, quindi eseguendo un CP () I file fa copiare in modo ricorsivo tutti i contenuti JAR/ZIP come directory.

Qual è il modo corretto di estrarre questi file di archivio senza espanderli?

È stato utile?

Soluzione

L'estrazione di un file di archivio in una directory può essere eseguito con una chiamata di metodo:

TFile archive = new TFile("archive.zip");
TFile directory = new TFile("directory");
TFile.cp_rp(archive, directory, TArchiveDetector.NULL, TArchiveDetector.NULL);

Il trucco è usare Tarchivedector.null quando si attraversano gli alberi della directory.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top