我有以下使用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
}
答案 0 :(得分:8)
你并没有冲刷作家 - 冲洗outStream
毫无意义,因为没有什么可以冲洗它。你应该:
outWriter.Flush();
在你倒带之前您以后的代码证明数据到达 writer - 而不是 stream 。
或者,只需从一开始就使用StringWriter
...这是创建TextWriter
然后稍后将文字写入其中的一种更简单的方法。