是否可以从 java.util.zip.Deflater 中获取原始压缩?

Is it possible to get a raw deflate out of java.util.zip.Deflater?

zlib docs 指定可以将负 windowBits 参数传递给 deflateInit2() 函数:

windowBits can also be –8..–15 for raw deflate. In this case, -windowBits determines the window size. deflate() will then generate raw deflate data with no zlib header or trailer, and will not compute an adler32 check value.

我在我的 C 代码中使用了它,并且在 Java 中我能够通过将 nowrap 参数的 true 传递给 Inflater构造函数。

但是,将 nowrap 参数的 true 传递给 Deflater 不会产生原始压缩。它 returns 比我的 C 实现多了 20 个字节,这听起来确实像 header 和校验和。 (将 false 传递给 nowrap 会产生更长的字节数组。)

我已经浏览了 Deflater docs 但还没有找到指定 window 位的方法,或者我想要原始放气。这个图书馆有可能吗?或者我需要使用其他实现来获得 Java 中的原始放气吗?

Deflater 生成 zlib 包装的数据 (RFC 1950)。 Deflater(level, true) 生成原始压缩数据 (RFC 1951)。