c# – Zlib Deflate的“同步刷新”

我需要一个zlib deflate压缩流.在我的实现中,我必须在整个会话中使用单个流.在此会话期间,小块数据将通过压缩流传递.每次传递一个块时,必须立即以压缩形式发送.

我的第一次尝试是使用DeflateStream但是当我发送第一个块时,它的压缩数据不会出现,直到我关闭流.

阅读约zlib flush modes,似乎有一个特定的模式,我需要什么.

>我是否使用正确的类(DeflateStream)进行zlib deflate压缩?
>如何启用“同步刷新”行为?

最佳答案
DotNetZip项目有一个子模块Zlib,它包含自己的DeflateStream实现.

此实现具有另一个名为FlushMode的属性:

DeflateStream deflate = new DeflateStream(stream, CompressionMode.Compress);
deflate.FlushMode = FlushType.Sync;
deflate.Write (data, 0, data.Length);
//No call to deflate.Flush() needed, automatically flushed on every write.
点赞