创建一个shim Stream

时间:2010-05-18 23:33:45

标签: c# stream buffering

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

Decode(Stream inStream,Stream outStream)

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

Stream decodedStream=new BlaDecodeStream(inStream);

因此我可以使用此流作为XmlReader构造函数的参数,方法与使用System.IO.Compression.GZipStream的方式相同。据我所知,唯一的另一个选择是将outStream流设置为MemoryStream或FileStream并进入两跳。我正在处理的文件是巨大的,所以这些选项都不是特别有吸引力。

在我重新发明轮子之前,是否有任何我能够从中得到的现有技术,或者我可能错过的BCL中的某些东西? CircularStream实现here可以提供一些帮助,但是当Stream的内部缓冲区为“空”时,我真的在寻找类似的东西来阻止(而不是over / underrun)从中读取并在写入内部缓冲区时已阻塞。

通过这种方式,它可以作为参数outStream,同时(即来自另一个线程)可以从XmlReader读取。

1 个答案:

答案 0 :(得分:1)

前一段时间我问过blocking stream reader。我实施了其中一个建议并且工作正常。