TrueZip - ¿Cómo descomprimir archivos JAR/zip internos sin expandirlos como directorios?

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

  •  29-10-2019
  •  | 
  •  

Pregunta

Estoy creando un archivo TZP usando TrueZip 7 y el método CP_RP para agregar todos los contenidos de directorio a la vez al archivo TZP.

Después de eso, estoy tratando de extraer todos los contenidos del archivo TZP a un directorio de destino. Sin embargo, la llamada:

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

Falla con un error: java.io.ioexception: [ruta] test.zip myjar.jar (el destino ya existe). Si uso CP en lugar de MV, entonces el error es ruta] test.zip myjar.jar (contenido en [ruta] test.zip myjar.jar)

El problema también parece ser que TrueZip identifica Zips y Jars como directorios y archivos, por lo que al hacer un ISDirectory () en ellas, esto tiene éxito y hacer un ListFiles () devuelve todos los archivos contenidos, por lo que ejecutar un CP () Los archivos hacen que todos los contenidos JAR/ZIP se copien como directorios.

¿Cuál es la forma correcta de extraer estos archivos de archivo sin expandirlos?

¿Fue útil?

Solución

La extracción de un archivo de archivo a un directorio se puede hacer con una llamada de método:

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

El truco es usar tarchivedetector. NULL al atravesar los árboles de directorio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top