在Java 7中,Deflater添加了对某些压缩参数(模式:FULL_FLUSH,SYNC_FLUSH)的支持.我想它们对应于标准API中类似Zlib的Zlib constants(尽管此版本具有更多模式).
我的疑问是那些模式与DEFLATE流的“块”如何相关(这些块是独立压缩的,除了块内的指针可能指向前一个块的原始子串).
这些模式中的一个(或两个)是否都暗示着刷新终止了(非最终的)DEFLATE块?呼叫者可以预测和/或建议这些块边界吗?
具体来说,我想告诉Deflater对象以下内容:“我将在预定长度(M)的段中为N个原始字节提供数据,并且因为我知道这些段很长并且在统计上有所不同,并且独立压缩它们几乎没有什么松懈和收获,我建议您将它们压缩在单独的DEFLATE块中.”我可以这样做吗?
解决方法:
是的,两次刷新都会在提供输入数据后终止当前块.
FULL_FLUSH进一步防止了以下块在其前面的块中使用匹配的字符串.