Deflater和GZip压缩的区别



我目前使用java.util.zip.Deflater压缩。java.util.zip.GZIPOutputStream也可用于压缩。这里我主要关注字节数组压缩。
有谁能告诉我这些Deflater和GZIPOutputStream的区别吗?(performancewise . .) .

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

GZIPOutputStream生成gzip包装的deflate数据。

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

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

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

在性能方面没有区别,除了标题和结尾部分有几个字节的差异。

在性能上存在差异,因为GZIPOutputStream只有一个不可更改的速度/压缩比设置,而Deflater有十个可能的比率,从最快+最少压缩到最慢+最压缩。

最新更新