与discussed before一样,当BinaryReader或BinaryWriter关闭时,其基础Stream也将关闭(aargh)。考虑这种情况:例程R
传递给MemoryStream,例如M
;我想将一些东西写入M
,然后将其传递给另一个例程以进行更多处理(不一定要编写)。为了方便起见,我想将M
包装在BinaryWriter中进行编写。写完之后,我完成了BinaryWriter,但没有完成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
}
但是,如果不关闭
M
,就无法处置BinaryStream。问:是否可以执行以下任一操作?
最佳答案
您最好使用以下方法获取底层的byte []缓冲区
byte[] buffer = ms.GetBuffer();
然后使用Array.Copy()方法复制字节数据。
您可以自由地使用它创建一个新的流。