Last Updated: May 22, 2026
A Stream in .NET deals in raw bytes. Files of text, on the other hand, are sequences of characters that need an encoding to translate between the two. StreamReader and StreamWriter are the text-oriented wrappers that sit on top of any byte stream and handle that translation, so code can read and write strings, lines, and characters instead of byte arrays. This lesson covers what those two classes do, the encoding choices that bridge bytes and characters, the constructors and convenience helpers, the streaming patterns that keep memory usage low on huge files, and the disposal rules that decide what happens to the underlying stream.