OS X gzip是否可以配置为匹配Java GZIPOutputStream



我正在尝试比较Java上的GZIP和CLI gzip命令上运行字符串的输出。输出不一样,我已经弄清楚了原因,但不确定如何让它们相互配合。

我已经阅读了许多关于SO的问题,阅读了gzip的手册页,以及GZIPOutputStream和DeflaterOutputStream的代码。GZIPOutputStream(通过Deflator设置)的默认压缩级别是"-1",几乎没有解释这意味着什么。此外,gzip CLI 只允许介于 1 和 9 之间的值(包括 1 和 9)。

那么有没有办法更改 Java 或 gzip 命令中的压缩设置以使它们产生相同的输出?

No. Java 正在使用 zlib 平减量指数,它派生自较旧的 gzip 命令行实用程序平减量函数,但并不完全相同。 它们通常不会产生相同的输出,并且没有设置来强制它们这样做。

压缩级别-1请求默认压缩级别,在当前的 zlib 实现中为 6 级。

我不得不问你为什么关心让他们的输出相同。 重要的是压缩是无损的,即 gzip 和 Java 压缩流在解压缩时都会产生相同的原始数据。 例如,没有要求不同版本的 zlib 在相同的压缩级别上产生相同的输出。

最新更新