This has been bugging me. I know Stream is an abstract class and therefore can\'t be instantiated but it has classes that are derived from it. Why is there
TextReader (which StreamReader is derived from) works with strings. Stream works with bytes. The conversion between text and bytes is performed by an Encoding.
Choose the right class based on whether the contents of your file text or binary.
It is important to understand the difference between text and bytes.