java.util.zip.ZipException:CEN标头无效(签名错误)

时间:2012-09-10 06:58:11

标签: java zip

我在执行此(相对简单的)代码时遇到此错误:

    ZipFile zf = new ZipFile(fn);
    Enumeration<? extends ZipEntry> eze = zf.entries();
    while (eze.hasMoreElements()) {
        ZipEntry ze = eze.nextElement();
        System.out.println(ze.getName());
    }
    zf.close();

实际上。有趣的是,我在java-sun-6u32和java-1.6.0-openjdk-amd64上得到它,但是java-sun-7u4成功了。解压缩本身似乎处理得很好。我猜这意味着这些zip文件可能是由java 7理解的一些较新版本的zip创建的,但之前的版本没有。但是,任何见解都将受到赞赏。另外,因为在制作中我真的没有选择使用java 7,任何制作早期版本的java的方法都能理解这个新版本的zip(如果实际上 那么问题是什么,当然。)

谢谢!

1 个答案:

答案 0 :(得分:14)

评论中提供的

7z l -slt输出非常有用:

  

Type = zip 64-bit

给出一个提示,它是 ZIP64 ZIP 规范的4.5版)。但是,虽然 Java7 支持它,但此支持目前不会向后移植到 Java6 ,您将不得不求助于外部库,例如Apache Compress。< / p>

P.S。作为参考,file test.zip会输出类似

的内容
test.zip: Zip archive data, at least v4.5 to extract