如何从一个字符串流? [英] how to generate a stream from a string?

查看:106
本文介绍了如何从一个字符串流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要写这需要它来自一个txt文件流的方法的单元测试,我想去做做这样的事情:

 流S = GenerateStreamFromString(A,B \\ n C,D);


解决方案

 公共流GenerateStreamFromString(字符串s)
{
    MemoryStream的流=新的MemoryStream();
    StreamWriter的作家=新的StreamWriter(流);
    writer.Write(多个);
    writer.Flush();
    stream.Position = 0;
    返回流;
}

不要忘了用用:

 使用(流S = GenerateStreamFromString(A,B \\ n C,D))
{
    // ...做的东西流
}


关于的StreamWriter 没有被处理。 的StreamWriter 仅仅是基本流周围的包装,并且不使用需要被设置的任何资源。在的Dispose 方法将关闭底层的StreamWriter 是写。在这种情况下,它是的MemoryStream 我们想回来。

在.NET 4.5有现在的StreamWriter 过载,保持作家被处置后,开放底层的流,但这code做同样的事情与.NET的其他版本太的作品。

请参阅Is有什么办法可以关闭的StreamWriter而不关闭它BaseStream?

I need to write a unit test for a method that takes a stream which comes from a txt file, I would like to do do something like this:

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

解决方案

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

Don't forget to use Using:

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


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.

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.

See Is there any way to close a StreamWriter without closing it's BaseStream?

这篇关于如何从一个字符串流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆