我使用的解压缩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
在某种程度上是有帮助的,但我确实在寻找类似的东西,当流的内部缓冲区在读取时是“空的”,而当内部缓冲区在写入时是满的时是阻塞的(而不是过度/不足)。
这样它就可以作为参数
outStream
同时(即从另一个线程)可以被
XmlReader
.