만들어진 이유


Stream에 문자열 데이터를 쓰려면 반드시 그 전에 Encoding타입을 이용해 바이트 배열로 변환해야한다.

MemoryStream ms = new MemoryStream();

byte[] buf = Encoding.UTF8.GetBytes("Hello World");
ms.Write(buf, 0, buf.Length);

문자열을 쓸 때마다 매번 변환을 거치는 작업은 번거롭기 때문에 StreamWriter, Reader클래스가 만들어졌다.

StreamWriter


MemoryStream ms = new MemoryStream();

StreamWriter sw = new StreamWriter(ms, Encoding.UTF8);
// 한줄 작성
sw.WriteLine("Hello World");
// 작성
sw.Write(32000);

// 내부적으로 속도향상을 위한 byte배열 버퍼를 가지고있다.
// 그 버퍼를 한번에 stream에 쓰는 역할을 한다.
// 일반적으로 stream에 써야할 데이터를 모두 썼으면 마지막에 한번 호출한다.
sw.Flush();

StreamReader


// 포지션을 돌려 놓는 것을 잊으면 안된다.!
ms.Position = 0;

StreamReader sr = new StreamReader(ms, Encoding.UTF8);
string txt = sr.ReadToEnd(); // 읽어서 txt에 대입
Console.WriteLine(txt); // 출력