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
}
4

1 回答 1

13

你不是在冲洗作家——冲洗outStream是没有意义的,因为没有什么可以冲洗的。你应该有:

outWriter.Flush();

在你倒带之前。您后面的代码证明数据到达了writer - 而不是

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

于 2013-06-07T15:21:04.180 回答