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