I'm trying to open a ZIP file in JAVA.
The code below works fine except with some large files in which case I get the following exception:
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)
Is there a known bug? Can it be due to higher compression level not supported in JAVA?
Note that I can not use Winzip to uncompress the file, and gzip under Linux gives an error about the data-length (uncompressed file is around 80 GB). I had to use the following workaround to uncompress it:
gunzip -S .zip < file.zip > file
Any ideas would be very very helpful.
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;
}
}
If you are not using Java 7 (which support ZIP64), the issue may be that java is trying to use the old ZIP format
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With