2013-06-07 1 views
4

MemoryStream에 쓰기 위해 StreamWriter을 사용하는 다음 코드가 있습니다.읽을 때 메모리 스트림에서 데이터가 잘립니다.

using(var outStream = new MemoryStream()) 
using (var outWriter = new StreamWriter(outStream)) 
{ 
    // my operation that's writing data to the stream 

    var outReader = new StreamReader(outStream); 
    outStream.Flush(); 
    outStream.Position = 0; 
    return outReader.ReadToEnd(); 

}

이 대부분 데이터의 반환하지만 끝 부분 잘라 : 나는 스트림을 읽을 때 그러나, 나는 잘린 데이터를 얻고있다. 그러나 나는 데이터가 스트림에 도착하는 것을 알고있다. 왜냐하면 내가 파일 MemoryStream 대신 파일에 쓰려고하면 전체 내용을 얻게되기 때문이다. 예를 들어,이 코드는 전체 내용은 파일에 기록 :

using (var outWriter = new StreamWriter(@"C:\temp\test.out")) 
{ 
    // my operation that's writing data to the stream 
} 

답변

8

당신은 작가를 세척하지 않는 - outStream 무의미 플러싱에 플러시 아무것도있다. 되감기 전에

outWriter.Flush(); 

을 가져야합니다. 최신 코드는 데이터가 작가에 도달했음을 증명하지만 스트림은이 아닙니다.

또는 시작 부분에서 StringWriter을 사용하면 TextWriter을 만든 다음 나중에 작성하는 텍스트를 가져 오는 훨씬 간단한 방법입니다.