繁体   English   中英

Java ZipFile-ZipException:打开zip文件时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM