Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java.util.zip写入大小_Java_Zip_Size - Fatal编程技术网

使用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
(或者
文件
文件输入流
)的原因。