编程语言
首页 > 编程语言> > Java Deflater中的SYNC_FLUSH / FULL_FLUSH参数:与DEFLATE块有关系吗?

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

作者:互联网

Java 7中,Deflater添加了对某些压缩参数(模式:FULL_FLUSH,SYNC_FLUSH)的支持.我想它们对应于标准API中类似Zlib的Zlib constants(尽管此版本具有更多模式).

我的疑问是那些模式与DEFLATE流的“块”如何相关(这些块是独立压缩的,除了块内的指针可能指向前一个块的原始子串).

这些模式中的一个(或两个)是否都暗示着刷新终止了(非最终的)DEFLATE块?呼叫者可以预测和/或建议这些块边界吗?

具体来说,我想告诉Deflater对象以下内容:“我将在预定长度(M)的段中为N个原始字节提供数据,并且因为我知道这些段很长并且在统计上有所不同,并且独立压缩它们几乎没有什么松懈和收获,我建议您将它们压缩在单独的DEFLATE块中.”我可以这样做吗?

解决方法:

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

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

标签:deflate,zlib,java
来源: https://codeday.me/bug/20191029/1960430.html