【发布时间】:2014-04-27 11:50:31
【问题描述】:
我在 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 文件。谁能解释为什么会这样?
谢谢。
【问题讨论】: