【发布时间】:2011-09-06 08:50:41
【问题描述】:
我有一个GZIPInputStream,它是从另一个ByteArrayInputStream 构建的。我想知道 gzip 数据的原始(未压缩)长度。虽然我可以读到GZIPInputStream的末尾,然后数一下,这会花费很多时间并浪费CPU。在阅读之前我想知道它的大小。
有没有类似ZipEntry.getSize() for GZIPInputStream的方法:
public long getSize ()
自: API 级别 1
获取此 ZipEntry 的未压缩大小。
【问题讨论】:
-
请注意,GZIP 仅保护模 2^32 的大小(即,它仅将大小的低 32 位存储在名为 ISIZE 的字段中)。 如果您的数据可能大于 4 GB,那么这些信息对您没有帮助。
-
继续这种方式,有两个其他的原因,最后四个字节不是未压缩数据的可靠度量,即使对于小文件也是如此。唯一可靠的方法是解压流并计算字节数。
标签: java gzip gzipinputstream