发布日期:2018-03-26
如何使用C#从字符串生成流?+ 查看更多
如何使用C#从字符串生成流?
+ 查看更多
发布日期:2018-03-07 14:13
分类:C#
浏览次数:98
我需要为一个方法编写一个单元测试,这个方法从一个txt文件中获取流,我想实现的方法类似于下面的代码:
Stream s = GenerateStreamFromString("a,b \n c,d");
回答
public static Stream GenerateStreamFromString(string s) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; }不要忘记使用Using:
using (Stream s = GenerateStreamFromString("a,b \n c,d")) { // ... Do stuff to stream }
关于StreamWriter不被处理的问题,StreamWriter仅仅是一个对基本流的封装,并且不需要任何需要被处理的资源。Dispose方法会关闭StreamWriter写入的底层流。这种情况下,我们想要的返回是MemoryStream。
在.NET 4.5有一个StreamWriter的重载,可以保证在writer关闭的时候底层流不关闭。但是代码不能在其他版本的.NET 运行