![](/img/trans.png)
[英]Unpacking zip files in Java that cause a “java.util.zip.ZipException” - invalid LOC header (bad signature)
[英]java.util.zip.ZipException: invalid CEN header (bad signature)
在执行此(相对简单的)代码时,我收到此错误:
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的任何方式理解拉链的这个新版本(如果这其实是什么问题,当然)。
谢谢!
您的评论中提供的7z l -slt
输出非常有用:
Type = zip 64位
给出一个提示,它是ZIP64 ( ZIP规范的4.5版本)。 但是,尽管Java7支持它,但此支持目前还没有向后移植到Java6 ,您将不得不求助于外部库,例如Apache Compress 。
PS作为参考, file test.zip
会输出类似的东西
test.zip: Zip archive data, at least v4.5 to extract
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.