Еще лучше было бы использовать 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);
}
Небольшое напоминание - если вы планируете записать все это в другой поток в конце, не забудьте Flush()
(И не оставляйте сиденье унитаза вверх).
Я использую StreamWriter вокруг ms, чтобы записать текстовые данные в память, и в конце записал все это на диск за один раз. (Я также могу изменить пример здесь на этот случай, если хотите)