Разница между байтовым массивом и MemoryStream - PullRequest
18 голосов
/ 20 августа 2008

Я читаю двоичный файл в программу анализа. Мне нужно будет пройтись по файлу и найти определенные маркеры, чтобы я мог разбить файл на части и передать эти части в конструкторы соответствующих объектов.

Есть ли преимущество в сохранении файла в виде потока, MemoryStream или FileStream, или он должен быть преобразован в массив byte []?

Keith

Ответы [ 2 ]

25 голосов
/ 20 августа 2008
Для

A byte[] или MemoryStream потребуется перенести весь файл в память. MemoryStream действительно является оберткой вокруг базового байтового массива. Лучший подход состоит в том, чтобы иметь два FileStream (один для ввода и один для вывода). Считывание из входного потока в поисках шаблона, используемого для указания того, что файл должен быть отделен при записи в текущий выходной файл.

Возможно, вы захотите обернуть входные и выходные файлы в BinaryReader и BinaryWriter соответственно, если они добавят ценность вашему сценарию.

8 голосов
/ 20 августа 2008

MemoryStream - это в основном байтовый массив с потоковым интерфейсом, например, последовательное чтение / запись и понятие текущей позиции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...