使用java.util.zip写入大小
我注意到,使用使用java.util.zip写入大小,java,zip,size,Java,Zip,Size,我注意到,使用java.util.zip库创建.zip文件无法正确写入大小,因此 zipEntry.getSize; //created with a ZipInputStream (zipEntry = zis.getNextEntry()) zipEntry.getCompressedSize(); 两者都始终返回-1 如果我使用ZipFile和枚举创建zipEntry,则不会发生这种情况,在这种特殊情况下,我无法这样做 如何使库正确写入大小?我尝试了以下代码,返回的大小很好 ZipInp
java.util.zip
库创建.zip文件无法正确写入大小,因此
zipEntry.getSize; //created with a ZipInputStream (zipEntry = zis.getNextEntry())
zipEntry.getCompressedSize();
两者都始终返回-1
如果我使用ZipFile
和枚举创建zipEntry
,则不会发生这种情况,在这种特殊情况下,我无法这样做
如何使库正确写入大小?我尝试了以下代码,返回的大小很好
ZipInputStream zis = new ZipInputStream(new FileInputStream(new File("/tmp/foo.zip")));
ZipEntry entry = zis.getNextEntry();
System.out.println(entry.getSize());
System.out.println(entry.getCompressedSize());
zis.close();
我认为问题不是来自您调用库的方式,而是可能来自您的zip文件。如果zip文件是由库创建的,则这只是一个问题,如果您使用WinRar等压缩所有内容,则没有问题。我已经用多个文件对它进行了测试,其中一半是使用库创建的,另一半是使用WinRar创建的。如果我解压缩库压缩的内容,然后使用WinRar再次压缩结果文件,它将返回正确的大小。此外,我没有使用文件
,因为我使用的是“存储卷”(Android),这也是我根本不能使用ZipFile
(或者文件
和文件输入流
)的原因。