Java Deflater中的SYNC_FLUSH / FULL_FLUSH参数:与DEFLATE块的关系?

时间:2014-05-31 16:26:54

标签: java zlib deflate

在Java 7中,Deflater增加了对某些压缩参数的支持(模式:FULL_FLUSHSYNC_FLUSH)。我猜他们在标准API中对应于类似constants的Zlib(尽管这个模式有更多模式)。

我怀疑这些模式是如何与"块" DEFLATE流(这些块是独立压缩的,除了块内的指针可能指向前一个块的原始子串)。

这些模式中的一个(或两个)是否意味着刷新终止(非最终)DEFLATE块?调用者可以预测和/或建议这些块边界吗?

具体来说,我希望告诉Deflater对象以下内容:"我将以预定长度(N的部分为您提供M个原始字节),因为我知道这些部分很长并且在统计上有所不同,并且因为我知道在单独压缩它们时几乎没有松动和获得的东西,我建议你在分离的DEFLATE块中压缩它们"。我可以这样做吗?

1 个答案:

答案 0 :(得分:4)

是的,两个刷新都会在提供的输入数据后终止当前块。

FULL_FLUSH进一步防止以下块在其之前的块中使用匹配的字符串。