FileInputStream fis=new FileInputStream("D:\\my.zip");
ZipInputStream in =new ZipInputStream(
new BufferedInputStream(fis));
ZipEntry entry;

while((entry=in.getNextEntry())!=null){
long size=entry.getSize();
long compressedsize=entry.getCompressedSize();
System.out.println("name:"+entry.getName()+"\tsize:"+size+"\tcompressedsize"+compressedsize);
}
in.close();
很简单的一个程序,就是size是-1,不是正确的值,为什么?

解决方案 »

  1.   

    1、用WinRAR或WinZip测试一下,是否都可以正常解压?里面的文件是否是完整的??
    2、 entry.setMethod(ZipEntry.STORED);//加上这一句试一下~~
        long size = entry.getSize();
      

  2.   

    压缩解压没问题,就是getsize()有问题,加上entry.setMethod(ZipEntry.STORED);也不好用,反而只输出一行了;
      

  3.   

    压缩前文件的大小 应该是压缩的时候写进去的吧 如果总是-1 那就是压缩前没有写入吧 javaapi中的setSize
    获知 ware 7z压缩的时候 也没有写入原始大小的信息
      

  4.   

    压缩的方法中调用setSize了,然后能正确输出文件大小,但在解压缩的方法中就是-1