Deflater和GZip压缩之间的区别

时间:2014-07-11 08:43:06

标签: java compression

我目前正在使用java.util.zip.Deflater进行压缩。 java.util.zip.GZIPOutputStream也可用于压缩。这里我主要关注字节数组压缩 任何人都可以告诉我这些Deflater和GZIPOutputStream之间的区别。 (performancewise ..)。

2 个答案:

答案 0 :(得分:6)

Deflater生成zlib包装的deflate压缩数据,除非nowrap为真,在这种情况下它会生成原始(未包装)deflate压缩数据。

GZIPOutputStream生成gzip包装的deflate数据。

deflate是RFC 1951中定义的压缩数据格式。

zlib是一个双字节头和四字节尾部,它提供了对未压缩数据的流和完整性检查的紧凑标识。 zlib在RFC 1950中描述。

gzip是一个10+字节的标头和8字节的预告片,提供元数据和完整性检查,其中元数据可以包括文件名,修改日期,原始操作系统,注释和额外数据。 gzip在RFC 1952中描述。

除了头部和预告片中的几个字节差异外,性能方面没有差异。

答案 1 :(得分:1)

性能存在差异,因为GZIPOutputStream只有一个速度/压缩比设置不可更改,而Deflater有十个可能的比率,从最快+最小压缩到最慢+最大压缩。这是一篇包含图about it的好文章。