无法创建MemoryStream

时间:2013-04-22 05:37:29

标签: c# memorystream

有没有理由为什么这段代码不应该生成一个带有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。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

您不刷新流编写器,因此永远不会将该字写入内存流。

在致电streamWriter.Write后添加以下内容:

streamWriter.Flush();

此外,如果您想稍后从内存流中读取该单词,请务必重置其位置,因为在写入后它位于单词slappy之后:

memoryStream.Position = 0;

答案 1 :(得分:2)

如果您不想致电streamWriter.Flush();,可以在创建StreamWriter时设置它的AutoFlush-Property。

MemoryStream memoryStream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(memoryStream)
   {
      AutoFlush = true
   }