web-dev-qa-db-fra.com

StreamReader vs BinaryReader?

StreamReader et BinaryReader peuvent être utilisés pour obtenir des données à partir d'un fichier binaire (par exemple)

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

Quelle est la différence et quand dois-je l'utiliser?

36
Royi Namir

StreamReader et BinaryReader peuvent être utilisés pour obtenir des données à partir d'un fichier binaire

Eh bien, StreamReader peut être utilisé pour obtenir des données de texte à partir d'une représentation binaire de texte.

BinaryReader peut être utilisé pour obtenir des données binaires arbitraires. Si certaines de ces données binaires se trouvent être une représentation de texte, c'est bien - mais ce n'est pas obligatoire.

Conclusion:

  • Si l'intégralité de vos données est un simple codage binaire de données texte, utilisez StreamReader.
  • Si vous avez fondamentalement des données binaires qui peuvent avoir certaines parties dans le texte, utilisez BinaryReader

Par exemple, vous ne le feriez pas essayez de lire un fichier JPEG avec StreamReader.

72
Jon Skeet