如何使用DeflateStream解压缩实时流数据?

迈克尔·J·格雷

我收到数据时会触发一个事件。接收到的数据是大型压缩流的一部分。

目前,我会维护aMemoryStream并在Write收到数据时立即对其进行调用但是,要解压缩此数据,我需要在其DeflateStream周围包装一个问题在于,当您调用ReadDeflateStream,它将读取零字节!

这是因为DeflateStream.BaseStreamMemoryStream我刚写来的,所以MemoryStream.Position已经更新,对于阅读写作。

除了MemoryStream.Seek(-bytesJustWritten, SeekOrigin.Current)每打完一次电话还有其他选择MemoryStream.Write吗?

我需要能够实时读取解压缩的字节,而不必等待流的关闭。

我以为我可以只使用两个MemoryStream对象,一个用于缓冲输入,然后一个用于复制然后读取,但是我很快意识到这会带来同样的问题;您不能先写入流,然后再读取流。

迈克尔·J·格雷

我通过使用一个MemoryStreamMemoryStream.Seek(-bytesJustWritten, SeekOrigin.Current)在每次调用MemoryStream.Write调用来解决了这一问题

此操作重置了流的位置,以允许读取刚解压缩的数据,并随后将其覆盖,同时保留的状态DeflateStream

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章