¿StreamReader vs BinaryReader?

AmbosStreamReader yBinaryReader se puede utilizar para obtener datos de un archivo binario (por ejemplo)

BinaryReader:

<code>   using (FileStream fs = File.Open(@"c:\1.bin",FileMode.Open))
            {
                    byte[] data = new BinaryReader(fs).ReadBytes((int)fs.Length);
                    Encoding.getstring....
            }
</code>

StreamReader:

<code>  using (FileStream fs = File.Open(@"c:\1.bin",FileMode.Open))
            {
                using (StreamReader sr = new StreamReader(fs,Encoding.UTF8))
                {
                       var myString=sr.ReadToEnd();
                }
            }
</code>

¿Cuál es la diferencia y cuándo debo usar cuál?

Respuestas a la pregunta(1)

Su respuesta a la pregunta