由於discussed before,當BinaryReader或BinaryWriter被關閉時,其基礎Stream也會關閉(aargh)。考慮這種情況:例程R
通過一個MemoryStream,比如M
;我想寫一些東西到M
,然後將它傳遞給另一個例程進行更多處理(不一定寫入)。爲了方便起見,我想將M
包裝在BinaryWriter中來完成我的寫作。寫完之後,我完成了BinaryWriter,但沒有完成M
。如何在.NET中「分流」Stream?
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的。
問:是否有辦法執行以下任一操作?
- 提取一個MemoryStream底層字節[],
- 克隆的Stream
- 重新打開一個流,它已經關閉
我不知道C#,但在Java中,您只需放棄而不關閉BinaryWriter。不使用{...}構造強制關閉?那麼不要使用這個構造! – 2009-10-27 21:47:16
P.S.但是在放棄BinaryWriter之前,你確實需要確保你刷新BinaryWriter。 – 2009-10-27 21:48:05