我有以下代码使用StreamWriter
写入MemoryStream
。但是,当我尝试读回流时,我得到了被截断的数据:
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
}
最佳答案
您不是要冲洗书写器-冲洗outStream
是没有意义的,因为没有冲洗对象。你应该有:
outWriter.Flush();
倒带之前。您后面的代码证明数据到达了编写器,而不是流。
另外,只需从一开始就使用
StringWriter
...这是创建TextWriter
并随后将文本写入其中的简单得多的方法。