9

Java zipEntry.getSize() 返回实际文件的大小,有时它返回-1(尽管文件大小大于0)。

Java API 文档说“返回条目数据的未压缩大小,如果未知,则返回 -1。”

不确定它会在什么情况下返回-1,即在什么情况下它将是未知的?

4

2 回答 2

7

令人惊讶的是,使用 ZipFile 而不是 ZipInputStream 来获取条目使得 getSize 和 getCompressedSize 返回正确的值。

     ZipFile zipfile = new ZipFile("myFile.zip"); 
     java.util.Enumeration zipEnum = zipfile.entries();
     while (zipEnum.hasMoreElements ()) 
     { 
        ZipEntry entry = (ZipEntry) zipEnum.nextElement(); 
        if (! entry.isDirectory ())
        {
            // entry.getName()
            // entry.getSize ()
            // entry.getCompressedSize ()
         }
     }

在http://vimalathithen.blogspot.de/2006/06/using-zipentrygetsize.html找到的技巧

于 2016-10-25T20:37:18.397 回答
0

如果这是 ZipFile 条目表中的内容,您将获得 -1 的返回值。这只是 zip 文件格式定义的一个方面。

于 2016-03-16T19:41:32.810 回答