title: What is the purpose of StreamReader when Stream.Read() exists?
body: <p>This has been bugging me. I know <strong>Stream</strong> is an abstract class and therefore can't be instantiated but it has classes that are derived from it. Why is there a <strong>StreamReader</strong> class and a <strong>Stream.Read()</strong> method (and vice verse for <strong>StreamWriter</strong> and <strong>Stream.Write()</strong>)? You can write to a text file using 3 million different methods and it's rather frustrating trying to get my head around all of these different types and methods in the <strong>System.IO</strong> namespace. I found questions and answers regarding the differences between the writer and reader objects or the derived stream objects themselves but nothing regarding this particular case.</p>