.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);
}
약간의 알림을 사용하는 것입니다 - 당신이 ', 마지막에 또 다른 스트림으로 돈을 모두 작성하려는 경우 Flush()
을 잊어 버려라. (변기를 올려 놓지 마라.)
ms 주위에서 StreamWriter를 사용하여 메모리에 텍스트 데이터를 쓰고 마지막에 한 번에 디스크에 모두 넣습니다. (나는이 경우에 예제를 바꿀 수도있다.)
"끝까지 다른 스트림에 모두 씁니다"- 샘플을 보여 주시겠습니까? 마지막에 다른 스트림으로 무엇을 의미합니까? – George2
왜 메모리 스트림을 플러시합니까? 이 메서드에 대한 주석 : "아무런 작업도 수행되지 않도록 플러시 무시" –
"StreamWriter"주위에'MemoryStream'을 사용하여 코드를 복사 한 것으로 생각합니다.'StreamWriter' 인스턴스를 플러시하여 그 안에 쓰여진 모든 텍스트가 'MemoryStream' 내부에 있는지 확인한 후 정렬. 처음에는 플러시하지 않았으며 모든 예상 데이터가 포함되지 않은 파일이 있습니다. –
아주 좋은 답이다! 감사! – George2