一尘不染

如何从字符串生成流?

c#

我需要为采用来自文本文件的流的方法编写单元测试。我想做这样的事情:

Stream s = GenerateStreamFromString("a,b \n c,d");

阅读 363

收藏
2020-05-19

共1个答案

一尘不染

public static Stream GenerateStreamFromString(string s)
{
    var stream = new MemoryStream();
    var writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}

不要忘记使用“使用”:

using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
    // ... Do stuff to stream
}

关于StreamWriter未处置。StreamWriter只是基本流的包装,并且不使用任何需要处理的资源。该Dispose方法将关闭底层StreamStreamWriter被写入。在这种情况下,MemoryStream我们要返回。

在.NET
4.5中,现在有一个重载StreamWriter,可以在处置编写器后使基础流保持打开状态,但是此代码执行相同的操作,并且也适用于其他版本的.NET。

请参见是否可以在不关闭StreamWriter的BaseStream的情况下将其关闭?

2020-05-19