1

我正在使用的解压 API 具有以下 API:

Decode(Stream inStream,Stream outStream)

我想围绕这个 API 创建一个包装器,这样我就可以创建自己的Stream类来提供解码的数据。

Stream decodedStream=new BlaDecodeStream(inStream);

这样我就可以使用这个流作为 XmlReader 构造函数的参数,就像使用System.IO.Compression.GZipStream. 据我所知,唯一的其他选项是将 outStream 流设置为 MemoryStream 或 FileStream 并进入两跳。我正在处理的文件非常庞大,因此这些选项都不是特别有吸引力。

在我重新发明轮子之前,是否有任何我可以借鉴的现有技术,或者我可能错过的 BCL 中的某些东西?这里CircularStream实现将在一定程度上有所帮助,但我真的在寻找类似的东西,当 Stream 的内部缓冲区在读取它时为“空”时会阻塞(而不是溢出/欠载),而当内部缓冲区为“空”时会阻塞写入时缓冲区已满。

通过这种方式,它可以用作参数outStream,同时(即从另一个线程)可以由XmlReader.

4

1 回答 1

1

不久前我询问了一个阻塞流阅读器。我实施了其中一项建议,效果很好。

于 2010-05-18T23:42:38.510 回答