Ich versuche, eine ZIP-Datei in JAVA zu öffnen.Sehr große Zip-Datei (> 50GB) -> ZipException: ungültige CEN-Header
Der folgende Code funktioniert gut, außer bei einigen großen Dateien in diesem Fall ich die folgende Ausnahme erhalten:
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)
Gibt es einen bekannten Fehler? Kann es aufgrund einer höheren Komprimierungsstufe in JAVA nicht unterstützt werden?
Beachten Sie, dass ich nicht Winzip verwenden kann, um die Datei zu dekomprimieren, und gzip unter Linux gibt einen Fehler über die Datenlänge (unkomprimierte Datei ist etwa 80 GB). Ich musste die folgende Problemumgehung verwenden, um es zu entpacken:
gunzip -S .zip <file.zip> file
Alle Ideen wären sehr, sehr hilfreich.
Code:
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;
}
}
Vielleicht kann Apache Commons Compression hier helfen? Die eingebaute Zip-Implementierung ist meines Wissens nicht die beste. – biziclop
Es gibt eine Größenbeschränkung in der standardmäßigen Zip-Implementierung. Sie können diese [Antwort] (http://stackoverflow.com/a/6738811/1048330) nützlich finden. – tenorsax