2009-08-25 8 views
1

.Net MemoryStream 개체 인스턴스의 경우 사용 후 명시 적으로 닫아야합니까? 또는 그것을 닫을 필요가 없습니까? 가장 좋은 방법은 무엇입니까?.Net MemoryStream 닫기 문제

VSTS2008 + .Net 3.5 + C#을 사용하고 있습니다.

답변

9

더 좋은 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를 사용하여 메모리에 텍스트 데이터를 쓰고 마지막에 한 번에 디스크에 모두 넣습니다. (나는이 경우에 예제를 바꿀 수도있다.)

+0

"끝까지 다른 스트림에 모두 씁니다"- 샘플을 보여 주시겠습니까? 마지막에 다른 스트림으로 무엇을 의미합니까? – George2

+1

왜 메모리 스트림을 플러시합니까? 이 메서드에 대한 주석 : "아무런 작업도 수행되지 않도록 플러시 무시" –

+0

"StreamWriter"주위에'MemoryStream'을 사용하여 코드를 복사 한 것으로 생각합니다.'StreamWriter' 인스턴스를 플러시하여 그 안에 쓰여진 모든 텍스트가 'MemoryStream' 내부에 있는지 확인한 후 정렬. 처음에는 플러시하지 않았으며 모든 예상 데이터가 포함되지 않은 파일이 있습니다. –