读取时数据从内存流中截断

时间:2013-06-07 15:18:21

标签: c# .net io stream memorystream

我有以下使用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 个答案:

答案 0 :(得分:8)

你并没有冲刷作家 - 冲洗outStream毫无意义,因为没有什么可以冲洗它。你应该:

outWriter.Flush();
在你倒带之前

您以后的代码证明数据到达 writer - 而不是 stream

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