对于.Net MemoryStream对象实例,是否需要在使用后明确关闭它?或者不需要关闭它?哪些是最佳做法?.Net MemoryStream关闭问题
我使用的是VSTS2008 + .Net 3.5 + C#。
对于.Net MemoryStream对象实例,是否需要在使用后明确关闭它?或者不需要关闭它?哪些是最佳做法?.Net MemoryStream关闭问题
我使用的是VSTS2008 + .Net 3.5 + C#。
当你完成它时,你应该关闭它。最好的做法是在try-catch-finally块的finally部分关闭流。你可以在这里得到更多的信息:
http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx
更好的办法是使用Using
using (MemoryStream ms = /*get it using your favorite ctor*/)
{
// use it here
// and now flush and copy to a file stream (for example)
ws.Flush();
byte[] buffer = ws.ToArray();
using (Stream stream = new FileStream("fileName", FileMode.Create))
stream.Write(buffer, 0, buffer.Length);
}
小提醒 - 如果你打算给它的所有写入到另一个流末,不要” t忘记Flush()
(并且不要让马桶座位离开)。
我在ms周围使用StreamWriter,将文本数据写入内存,并最终将所有内容放在光盘上。 (如果你愿意的话,我也可以把这个例子改成这个例子)
“最后把它写入另一个流中” - 你能给我看一个样品吗?你什么意思是“最后流入另一个流”? – George2 2009-08-25 04:38:56
为什么要刷新内存流?此方法的评论是:“重写Flush以便不执行任何操作。” – 2010-01-22 12:18:26
我想我从'StreamStreamer'的'MemoryStream'的用法复制了代码,并且我正在刷新'StreamWriter'实例,以确保写入它的所有文本在读取之前都在MemoryStream的“内部”阵列。 我记得起初没有刷新,并得到了不包含所有预期数据的文件。 – 2010-01-24 14:49:28
很好的答案!谢谢! – George2 2009-08-25 04:45:11