非常大的zip文件(> 50GB) - >抛出:ZipException:无效CEN头(

2019-09-16 11:00发布

我试图打开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)

是否有一个已知的bug? 它可能是由于在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;
    }
}

Answer 1:

如果你没有使用Java 7(支持ZIP64),该问题可能是,Java是试图使用旧的ZIP格式



文章来源: Very large zip file (> 50GB) --> ZipException: invalid CEN header