【问题标题】:Data is truncated from memory stream when reading读取时从内存流中截断数据
【发布时间】:2013-06-07 23:21:04
【问题描述】:

我有以下代码使用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
}

【问题讨论】:

    标签: c# .net io stream memorystream


    【解决方案1】:

    你没有刷新作者 - 刷新 outStream 是没有意义的,因为没有什么可以刷新它。你应该有:

    outWriter.Flush();
    

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 2018-04-12
      • 2015-05-15
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多