web-dev-qa-db-ja.com

StreamReader vs 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();
                }
            }

違いは何ですか?いつ使用しますか?

36
Royi Namir

StreamReaderとBinaryReaderの両方を使用して、バイナリファイルからデータを取得できます。

さて、StreamReaderを使用して、テキストのバイナリ表現からテキストデータを取得できます。

BinaryReaderを使用して、任意のバイナリデータを取得できます。そのバイナリデータの一部がテキストの表現である場合、それは問題ありませんが、そうである必要はありません。

結論:

  • データ全体がテキストデータの単純なバイナリエンコーディングである場合は、StreamReaderを使用します。
  • テキストに基本的にbinaryデータがあり、たまたまsome部分がある場合は、BinaryReaderを使用します

たとえば、would n'tは、StreamReaderでJPEGファイルを読み取ろうとします。

72
Jon Skeet