1

这段代码有什么理由不应该产生一个带有 Slappy 这个词的内存流吗?

    private MemoryStream StringBuilderToMemoryStream(StringBuilder source)
    {
        MemoryStream memoryStream = new MemoryStream();
        StreamWriter streamWriter = new StreamWriter(memoryStream);
        streamWriter.Write("slappy");
        return memoryStream;
    }

即使我说它streamWriter.Write(source.toString());失败了。

有趣的是,它适用于调用此例程的方法之一,但不适用于其他任何方法。

我打电话给他们的顺序也没有区别。

但无论如何,即使我调用上述方法,从有效的方法中,输出仍然是一个空的 MemoryStream。

有什么想法吗?

4

2 回答 2

8

您不会刷新流编写器,因此该单词永远不会被写入内存流。

在调用后添加以下内容streamWriter.Write

streamWriter.Flush();

此外,如果您想稍后从内存流中读取该单词,请确保重置其位置,因为在 Write 之后它位于 word 之后slappy

memoryStream.Position = 0;
于 2013-04-22T05:39:24.667 回答
2

如果您不想调用streamWriter.Flush();,您可以在创建 StreamWriter 的那一刻设置它的 AutoFlush-Property。

MemoryStream memoryStream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(memoryStream)
   {
      AutoFlush = true
   }
于 2013-04-22T05:50:21.090 回答