在 Java 7 中,Deflater添加了对某些压缩参数的支持(模式:FULL_FLUSH
、SYNC_FLUSH
)。我猜他们对应的 Zlib 类似 constants在标准 API 中(虽然这个 API 有更多模式)。
我怀疑这些模式如何与 DEFLATE 流的“ block ”相关(这些 block 是独立压缩的,除了 block 内的指针可能指向前一个 block 的原始子字符串)。
这些模式中的一种(或两种)是否意味着刷新终止(非最终)DEFLATE block ?调用者能否预测和/或建议这些 block 边界?
具体来说,我想告诉 Deflater
对象如下:“我将在预定长度的部分中为您提供 N
个原始字节 (M
),并且因为我知道这些部分很长并且在统计上是不同的,并且因为我知道独立压缩它们几乎没有松动和收获,所以我建议您将它们压缩在单独的 DEFLATE block 中“.我可以这样做吗?
最佳答案
是的,两次刷新都在提供的输入数据之后终止当前 block 。
FULL_FLUSH
进一步防止后续 block 使用其之前 block 中的匹配字符串。
关于java - Java Deflater : relation to DEFLATE blocks? 中的 SYNC_FLUSH/FULL_FLUSH 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23973048/