Разница между массивом байтов и MemoryStream
-
08-06-2019 - |
Вопрос
Я считываю двоичный файл в программу синтаксического анализа.Мне нужно будет выполнить итерацию по файлу и найти определенные маркеры, чтобы я мог разделить файл и передать эти части в конструкторы соответствующего объекта.
Есть ли преимущество в хранении файла в виде потока, будь то MemoryStream или FileStream, или его следует преобразовать в массив byte[]?
Кит
Решение
A byte[]
или MemoryStream
и то, и другое потребует переноса всего файла в память.A MemoryStream
на самом деле это оболочка вокруг базового массива байтов.Лучший подход - иметь два FileStream
(один для ввода и один для вывода).Считывание из входного потока в поисках шаблона, используемого для указания, что файл должен быть разделен при записи в текущий выходной файл.
Возможно, вы захотите рассмотреть возможность упаковки входных и выходных файлов в BinaryReader
и BinaryWriter
соответственно, если они добавляют ценность вашему сценарию.
Другие советы
MemoryStream - это, по сути, массив байтов с потоковым интерфейсом, напримерпоследовательное чтение / запись и концепция текущей позиции.