StreamReader和BinaryReader?

时间:2012-04-27 15:56:26

标签: c# .net file streamreader binaryreader

StreamReaderBinaryReader都可用于从二进制文件中获取数据(例如)

BinaryReader:

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

StreamReader:

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

有什么区别,我什么时候应该使用哪个?

1 个答案:

答案 0 :(得分:68)

  

StreamReader和BinaryReader都可用于从二进制文件中获取数据

嗯,StreamReader可用于从文本的二进制表示中获取文本数据。

BinaryReader可用于获取任意二进制数据。如果某些二进制数据碰巧是文本的表示,那很好 - 但它不一定是。

底线:

  • 如果您的整个数据是文本数据的直接二进制编码,请使用StreamReader
  • 如果您从根本上获得了二进制数据,这些数据可能恰好在文本中包含部分部分,请使用BinaryReader

例如,您不会尝试使用StreamReader读取JPEG文件。