2012-04-10 8 views
8

Estoy tratando de abrir un archivo ZIP en JAVA.Archivo zip muy grande (> 50 GB) -> ZipException: encabezado CEN no válido

El siguiente código funciona bien, excepto con algunos archivos de gran tamaño en cuyo caso me sale el siguiente excepción:

Exception in thread "main" java.util.zip.ZipException: invalid CEN header (bad signature) 
at java.util.zip.ZipFile.open(Native Method) 
at java.util.zip.ZipFile.<init>(ZipFile.java:114) 
at java.util.zip.ZipFile.<init>(ZipFile.java:75) 

¿Hay un fallo conocido? ¿Puede deberse a un nivel de compresión más alto que no es compatible con JAVA?

Tenga en cuenta que no puedo usar Winzip para descomprimir el archivo, y gzip en Linux da un error sobre la longitud de los datos (el archivo descomprimido es de alrededor de 80 GB). Tuve que usar la siguiente solución para descomprimirlo:

gunzip -S .zip <file.zip> file 

Cualquier idea sería muy, muy servicial.

Código:

if (file.getExtension().equals("gz")) { 
    br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(name)))); 
} 
else if (file.getExtension().equals("zip")) { 
    ZipFile zipFile = new ZipFile(name); // <-------------------FAILS HERE 
    Enumeration<? extends ZipEntry> entries = zipFile.entries(); 
    while (entries.hasMoreElements()) { 
     ZipEntry zipEntry = entries.nextElement(); 
     System.out.println("ZIP File in the archive:" + zipEntry.getName()); 
     br = new BufferedReader(new InputStreamReader(zipFile.getInputStream(zipEntry))); 
     break; 
    } 
} 
+1

Tal Apache Commons compresión puede ayudar aquí? La implementación de zip incorporada no es la mejor hasta donde yo sé. – biziclop

+2

Hay un límite de tamaño en la implementación zip predeterminada. Puede encontrar esta [respuesta] (http://stackoverflow.com/a/6738811/1048330) útil. – tenorsax

Respuesta

Cuestiones relacionadas