读取内存流时数据被截断

5
我有以下代码,使用 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
}
1个回答

14

你没有刷新写入器 - 刷新outStream是无意义的,因为没有东西可以刷新。你应该使用:

outWriter.Flush();

在回放之前,请确认您的后续代码证明数据已到达writer而不是stream

或者,从一开始就使用StringWriter...这是创建TextWriter并稍后将文本写入其中的更简单的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接