Skip Navigation

Get a String from a MemoryStream

The MSDN article for MemoryStream has this example of outputting a string to the console.

private static void Main(string[] args)
int count;
byte[] byteArray;
char[] charArray;
UnicodeEncoding uniEncoding = new UnicodeEncoding();

// Create the data to write to the stream.
byte[] firstString = uniEncoding.GetBytes("Invalid file path characters are: ");
byte[] secondString = uniEncoding.GetBytes(Path.GetInvalidPathChars());

using(MemoryStream memStream = new MemoryStream(100))
// Write the first string to the stream.
memStream.Write(firstString, 0 , firstString.Length);

// Write the second string to the stream, byte by byte.
count = 0;
while(count < secondString.Length)

// Write the stream properties to the console.
"Capacity = {0}, Length = {1}, Position = {2}\n",

// Set the position to the beginning of the stream.
memStream.Seek(0, SeekOrigin.Begin);

// Read the first 20 bytes from the stream.
byteArray = new byte[memStream.Length];
count = memStream.Read(byteArray, 0, 20);

// Read the remaining bytes, byte by byte.
while(count < memStream.Length)
byteArray[count++] = Convert.ToByte(memStream.ReadByte());

// Decode the byte array into a char array
// and write it to the console.
charArray = new char[uniEncoding.GetCharCount(byteArray, 0, count)];
uniEncoding.GetDecoder().GetChars(byteArray, 0, count, charArray, 0);

I have a problem with code examples that try and do too much. Here is a much less complex example of writing a string to the console from a MemoryStream.

private static void Main(string[] args)
using (var memoryStream = new MemoryStream(100))
using (var streamWriter = new StreamWriter(memoryStream))
using (var streamReader = new StreamReader(memoryStream))
var invalidPath = new string(Path.GetInvalidPathChars());
streamWriter.WriteLine("Invalid file path characters are:");

memoryStream.Position = 0;

var stringToOutput = streamReader.ReadToEnd();