Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Deflater和GZip压缩之间的差异_Java_Compression - Fatal编程技术网

Java Deflater和GZip压缩之间的差异

Java Deflater和GZip压缩之间的差异,java,compression,Java,Compression,我目前正在使用java.util.zip.Deflater进行压缩。另外,java.util.zip.GZIPOutputStream也可用于压缩。这里我主要关注字节数组压缩。 有人能告诉我这些平减指数和GZIPOutputStream的区别吗。(performancewise.。Deflater生成zlib包装的deflate压缩数据,除非nowrap为true,在这种情况下,它生成原始(未包装)的deflate压缩数据 GZIPOutputStream生成gzip包装的deflate数据 d

我目前正在使用
java.util.zip.Deflater
进行压缩。另外,
java.util.zip.GZIPOutputStream
也可用于压缩。这里我主要关注字节数组压缩。

有人能告诉我这些平减指数和GZIPOutputStream的区别吗。(performancewise.。

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

GZIPOutputStream
生成gzip包装的deflate数据

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

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

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


性能方面没有差异,只是头和尾文件中有几个字节的差异。

性能方面有差异,因为
GZIPOutputStream
只有一个不可更改的速度/压缩比设置,而
Deflater
有十个可能的比率,从最快+最少压缩到最慢+最多压缩。这是一篇很好的图表文章。

@MarkAdler-GZip的Java impl不允许直接更改压缩级别设置,请参阅其构造函数和方法:。在内部,它可以访问“def”字段,该字段为放气阀类型,是气流的内部压缩机。因此,可以覆盖流以访问受保护的“def”并在那里设置级别,但不能直接通过GZip。。接口。