如何从字符串生成流? [英] How do I generate a stream from a string?
问题描述
我需要为采用来自文本文件的流的方法编写单元测试。我想做这样的事情:
I need to write a unit test for a method that takes a stream which comes from a text file. I would like to do do something like this:
Stream s = GenerateStreamFromString("a,b \n c,d");
推荐答案
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:
Don't forget to use Using:
using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
// ... Do stuff to stream
}
关于 StreamWriter
未处理。 StreamWriter
只是基本流的包装,并且不使用任何需要处理的资源。 Dispose
方法将关闭 StreamWriter
是的基础 Stream
写。在这种情况下,就是我们要返回的 MemoryStream
。
About the StreamWriter
not being disposed. StreamWriter
is just a wrapper around the base stream, and doesn't use any resources that need to be disposed. The Dispose
method will close the underlying Stream
that StreamWriter
is writing to. In this case that is the MemoryStream
we want to return.
.NET 4.5中现在存在一个重载 StreamWriter
可以在丢弃编写器之后使基础流保持打开状态,但是此代码执行相同的操作,并且也可以与其他版本的.NET一起使用。
In .NET 4.5 there is now an overload for StreamWriter
that keeps the underlying stream open after the writer is disposed of, but this code does the same thing and works with other versions of .NET too.
请参见是否可以在不关闭其BaseStream的情况下关闭StreamWriter?
这篇关于如何从字符串生成流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!