Вопрос по file, c#, .net – StreamReader против BinaryReader?

32

И то и другоеStreamReader а такжеBinaryReader может использоваться для получения данных из двоичного файла (например)

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

Какая разница и когда я должен использовать какой?

Да, но предположительно закодирован как строка UTF-8 ... так что по сути это будет текст. Adam Houldsworth
Один подходит для текстовых файлов, другой для бинарных файлов? Как вы даже ускользнули в вашем примере кода. Adam Houldsworth
@AdamHouldsworth разве строка utf8 может содержать любую информацию? Royi Namir
@Adam Houldsworth utf8 строка также может содержать двоичные данные. Royi Namir
Строка @RoyiNamir & quot; utf8 может содержать двоичные данные & quot; - что вы считаете "двоичными данными"? ? Henk Holterman

Ваш Ответ

1   ответ
67

file

Что ж,StreamReader может использоваться для получения текстовых данных из двоичного представления текста.

BinaryReader может использоваться для получения произвольных двоичных данных. Если некоторые из этих двоичных данных оказываются представлением текста, это нормально, но это не обязательно.

Нижняя линия:

If the entirety of your data is a straightforward binary encoding of text data, use StreamReader. If you've fundamentally got binary data which may happen to have some portions in text, use BinaryReader

Так, например, выwouldn't попробуйте прочитать файл JPEG сStreamReader.

Error: User Rate Limit Exceededbinary representationError: User Rate Limit Exceededcsharpindepth.com/Articles/General/Unicode.aspx
Error: User Rate Limit Exceededisn'tError: User Rate Limit Exceeded
Error: User Rate Limit ExceededcharacterError: User Rate Limit ExceededcharacterError: User Rate Limit ExceededbyteError: User Rate Limit Exceeded
Error: User Rate Limit ExceededabsolutelyError: User Rate Limit Exceeded
Error: User Rate Limit Exceededmust notError: User Rate Limit ExceededwillError: User Rate Limit Exceeded

Похожие вопросы