我搜索并阅读了有关ZipEntry(JAVA 7)的所有问题,但我的问题无处可寻:
我在JAVA中成功压缩和解压缩文件,但是在zip时,我将未压缩的大小设置为ZipEntry.setSize(long)
,其值肯定小于int值,
回读,在解压缩时,ZipEntry.getSize()
总是返回-1。
虽然我的程序运行良好,但验证部分会警告unknown size
。
如何设置未压缩的大小?
答案 0 :(得分:2)
似乎JAVA中存在一个错误: https://community.oracle.com/thread/2073587?start=0&tstart=0
目前我找不到任何解决方案或修补方法。 可能ORACLE认为:解压缩有效,所以不要管它。 问候。 ;!JOOP
答案 1 :(得分:1)
乍一看,它看起来像一个错误,但正如here解释的那样,它实际上并非如此!
大小信息(以及CRC之类的其他信息)以压缩方式存储,以便访问您必须访问的信息:
getNextEntry()
以获取第一个条目getSize()
将返回-1 read(buffer)
getNextEntry()
getSize()
现在将返回正确的大小!很奇怪,但这显然应该如何运作
答案 2 :(得分:-1)
发布一些压缩代码。在将其添加到zip存档/流之前,您应ZipEntry.setSize(long)
。