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;
}
}
Tal Apache Commons compresión puede ayudar aquí? La implementación de zip incorporada no es la mejor hasta donde yo sé. – biziclop
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