Хранение файла в байтовом массиве против чтения и записи с файловым потоком? - PullRequest
3 голосов
/ 31 декабря 2011

Я работаю над программой, которая изменяет файл, и мне интересно, неправильный ли способ работы с ним.

Файл хранится в блоках внутри другого файла и отделяетсякучей хешей.Его размер составляет всего 1 МБ, поэтому я просто рассчитываю его местоположение один раз, считываю его в байтовый массив и работаю с ним вот так.Весь файл, несмотря на его размер, помещается в байтовый массив в памяти.Это единственная цель моей программы, и она занимает почти единственную память, которую она занимает.

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Это полностью зависит от ожидаемого размера (диапазона) файлов, которые вы будете читать. Если ваши входные файлы могут достигать размера более ста МБ, такой подход не имеет большого смысла.

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

Однако, если вашему программному обеспечению фактически не требуется все содержимое файла в памяти, то для этого нет особых аргументов (даже для небольших файлов).

1 голос
/ 31 декабря 2011

Если вам требуется произвольный доступ для чтения / записи к файлу, чтобы изменить его, то чтение его в память, вероятно, будет в порядке, если вы можете быть уверены, что размер файла никогда не будет превышать определенный размер (вы не хотите прочитать несколько сотен МБ файлов в память).

Обычно лучше использовать потоковый ридер (например, BinaryReader) и обрабатывать данные по ходу.

0 голосов
/ 31 декабря 2011

Это ужасно - как и большинство операций с памятью / ЦП - если вам не нужно это делать.

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