我正在尝试在Java和CLI gzip命令上通过GZIP比较运行字符串的输出。输出是不一样的,我已经弄明白为什么,但不知道如何让他们彼此jive。
我已经阅读了很多关于SO的问题,已经阅读了gzip的手册页,以及GZIPOutputStream和DeflaterOutputStream的代码。 GZIPOutputStream的默认压缩级别(通过Deflator设置)为“-1”,并且几乎没有解释这意味着什么。此外,gzip CLI仅允许1到9之间的值,包括在内。
那么有没有办法可以在Java或gzip命令中更改压缩设置以使它们产生相同的输出?
答案 0 :(得分:2)
没有。 Java正在使用zlib deflator,它是从旧的gzip命令行实用程序平减器派生但不完全相同的。它们通常不会产生相同的输出,也没有设置强制它们这样做。
压缩级别-1
请求默认压缩级别,当前zlib实现中的级别为6
。
我不得不问你为什么要关心他们的输出是一样的。重要的是压缩是无损的,即gzip和Java压缩流在解压缩时都产生相同的原始数据。例如,不要求zlib的不同版本在相同的压缩级别产生相同的输出。