如前所述,当 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
}
但是,我不能在不关闭的情况下处理 BinaryStream M
。
问:有没有办法做到以下任何一项?
- 从 MemoryStream 中提取底层 byte[],
- 克隆一个流
- 关闭后重新打开流