java zipentry getsize returns -1

java zipentry getsize returns -1

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

Java API 文档说 "Returns the uncompressed size of the entry data, or -1 if not known."

不确定它会在什么情况下 return -1 即在什么情况下它会是未知的?

如果 ZipFile 条目 table 中的内容是 -1,您将得到 return。这只是 zip 文件格式定义的一个方面。

意外地使用 ZipFile 而不是 ZipInputStream 来获取条目 使 getSize 和 getCompressedSize 成为 return 正确的值。

     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

找到了技巧