我正在尝试用 JAVA 打开一个 ZIP 文件。
下面的代码工作正常,除了一些大文件,在这种情况下我得到以下异常:
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)
有已知的错误吗?可能是因为 JAVA 不支持更高的压缩级别吗?
请注意,我不能使用 Winzip 解压缩文件,并且 Linux 下的 gzip 给出了有关数据长度的错误(未压缩文件约为 80 GB)。我不得不使用以下解决方法来解压缩它:
gunzip -S .zip < file.zip > file
任何想法都会非常有帮助。
代码:
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;
}
}