我目前正在使用java.util.zip.Deflater
进行压缩。 java.util.zip.GZIPOutputStream
也可用于压缩。这里我主要关注字节数组压缩
任何人都可以告诉我这些Deflater和GZIPOutputStream之间的区别。 (performancewise ..)。
答案 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的好文章。