代码之家  ›  专栏  ›  技术社区  ›  spender

创建填充流

  •  1
  • spender  · 技术社区  · 14 年前

    我使用的解压缩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 .

    1 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    7 年前

    我问了一个问题。 blocking stream reader 不久前。我执行了其中一个建议,它工作得很好。