Как конвертировать BinaryReader в поток в C #? - PullRequest
1 голос
/ 18 октября 2011

Мне нужно полностью прочитать «.bin» файл и передать поток функции.Я пробовал это с BinaryReader, который работал нормально для чтения значений побайтно, я хочу передать весь файл в виде строкового потока в мою функцию.Использование StreamReader дает мусорную информацию, похоже, что StreamReader не может правильно прочитать bin-файл.

Заранее спасибо.

1 Ответ

0 голосов
/ 18 октября 2011

Не передавайте двоичные данные как string. Вместо этого используйте byte[], который отделен от любого Stream, с которого вы, возможно, читали его. Правильно, что StreamReader предназначен для чтения текста, поэтому вам нужно использовать BinaryReader или просто Stream.Read() метод напрямую. Если поток, из которого вы читаете, позволяет искать (выставленный через свойство CanSeek), вы можете обнаружить его Length и прочитать все байты из потока за один раз.

Если, однако, поток очень большой или не поддерживает поиск, вам нужно быть немного более сложным при чтении, выполняя его порциями, пока метод Read() не вернет 0 (что означает конец поток достигнут).

Нет StreamReader.ReadToEnd() эквивалента для чтения двоичных данных, но определить его как метод расширения не очень сложно.

...