我如何与QUOT;叉"在.NET中流? [英] How do I "fork" a Stream in .NET?

查看:175
本文介绍了我如何与QUOT;叉"在.NET中流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于 之前讨论的,当一个BinaryReader或得到的BinaryWriter关闭,它的基本流中获取关闭以及(AARGH)。考虑这种情况:研究传递一个MemoryStream一个套路,说 M ;我想写一些东西 M ,然后将它传递给另一个例程更多的处理(不一定是书面)。为方便起见,我想换行 M 中的BinaryWriter做我的写作。写完后,我用的BinaryWriter做,但不能与 M

As discussed before, when a BinaryReader or BinaryWriter gets closed, its underlying Stream get closed as well (aargh). Consider this situation: a routine R is passed a MemoryStream, say M; I would like to write some stuff to M and then pass it to another routine for more processing (not necessarily writing). For convenience, I'd like to wrap M in a BinaryWriter to do my writing. After writing, I'm done with the BinaryWriter but not with M.

void R(MemoryStream M)
{
    using (B = new BinaryWriter(M))
    {
        // write some stuff using B
    }

    S(M);  // now pass M to another routine for further processing
}



不过,我可以' ŧ处置BinaryStream的,但不关闭 M

问:有没有办法做任何以下

Q: Is there a way to do any of the following?


  • 的?从一个MemoryStream提取基础的byte []

  • 克隆流

  • 重新打开一个流,它已经关闭后,

推荐答案

由于几个谁建议ToArray的,我被带到正确的答案,这是'M.GetBuffer。 ToArray的是不是太糟糕,但它

Thanks to several who suggested ToArray, I was led to right answer, which is `M.GetBuffer'. ToArray is not too bad, but it


  • 进行复印

  • 仅获取缓冲区的一部分

的GetBuffer只是抓住底层字节[],这是我追求的参考。

GetBuffer just grabs a reference to the underlying byte[], which is what I'm after.

这篇关于我如何与QUOT;叉"在.NET中流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆