java.util.zip.ZipError : invalid CEN header (bad signature)

标签 java zip nio

我在 Red Hat Linux 上使用 Java 1.7.0_40,我有以下代码:

Path zipfile = Paths.get(filename);
FileSystem fs = FileSystems.newFileSystem(zipfile, FileTest.class.getClassLoader());

filename 变量指向一个 788MB 的 zip 文件。 zip 文件的未压缩大小为 8.3GB。当我运行上面的代码时,出现以下异常:

Exception in thread "main" java.util.zip.ZipError: invalid CEN header (bad signature)
        at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
        at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1058)
        at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
        at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
        at java.nio.file.FileSystems.newFileSystem(FileSystems.java:386)
        at FileTest.readFromZip(FileTest.java:35)
        at FileTest.main(FileTest.java:25)

我的印象是 Java 7 能够处理大型 zip 文件。谁能解释为什么会这样?

谢谢。

最佳答案

我在基于 Maven 的项目中也遇到过这个问题。发生此问题是因为 jar 损坏。从 .m2 文件夹中删除 jars 并重新构建项目;效果非常好。

关于java.util.zip.ZipError : invalid CEN header (bad signature),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536279/

相关文章:

java - xml 数据文档末尾的额外内容

java - 将 LineChart(javafx) 样式设置为子元素

java - .zip 文件上传 Spring

Java/Android - 快速 ByteBuffer 解析

Java IO vs NIO vs 任务队列

java - 当我使用 flutter 运行 native 代码时出现一些错误

java - 无法将两个矩阵相乘(double[][] 数组)

cygwin - 使用 Cygwin 压缩文件夹中的单个文件并压缩整个文件夹

java - Maven:压缩资源并保存到特定文件夹中

tomcat - NIO 连接器 + gzip 压缩