我使用的解压缩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
读取。