我如何与QUOT;叉"在.NET中流? [英] How do I "fork" a Stream in .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屋!