[英]Java ZipFile - ZipException: error in opening zip file
我从服务器收到一个zip文件,必须对其进行处理。 我可以手动将其解压缩。 因此,我相信zip文件没有损坏。
下面的代码从Zip文件读取文件,而未将其解压缩。
import java.io.File;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipFileReader {
public static void main(String[] args) throws Exception{
File file = new File("/Users/wire/data.zip");
ZipFile zipFile = new ZipFile(file.getPath());//Getting error here
for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) e.nextElement();
System.out.println(entry.getName());
}
}
}
抛出以下错误:
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:225)
at java.util.zip.ZipFile.<init>(ZipFile.java:155)
at java.util.zip.ZipFile.<init>(ZipFile.java:126)
at com.log.ZipFileReader.main(ZipFileReader.java:11)
但是,如果我手动将其解压缩并压缩回去,则上面的代码可以正常工作,下面是输出:
data/
data/file/
data/file/log.txt
__MACOSX/
__MACOSX/data/
__MACOSX/data/file/
__MACOSX/data/file/._log.txt
注意:我从服务器收到的压缩文件是5MB。 但是,一旦我将其解压缩并压缩回去,新的zip文件大小就会变成8MB。
添加:
Apples-MacBook-Pro:~ test$ unzip -v data.zip
Archive: data.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of data.zip or
data.zip.zip, and cannot find data.zip.ZIP, period.
根据注释,该文件是一个错误命名的.tar.bz2
文件,而不是真正的.zip
文件。 根据此答案和此答案 ,可以将其与Apache Commons Compress库一起解压缩 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.