snippetcsharpCritical
How do I generate a stream from a string?
Viewed 0 times
streamhowfromgeneratestring
Problem
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");Solution
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;
}Don't forget to use Using:
using (var stream = 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 its BaseStream?
Code Snippets
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
}Context
Stack Overflow Q#1879395, score: 1282
Revisions (0)
No revisions yet.