java zipentry getsize返回-1

时间:2016-03-16 19:38:29

标签: java zip zipinputstream

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

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

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

2 个答案:

答案 0 :(得分:4)

惊奇地使用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

找到了

技巧

答案 1 :(得分:1)

如果这是ZipFile条目表中的内容,那么

将返回-1。这只是zip文件格式定义的一个方面。