2012-02-21 3 views
0

У меня есть BinaryReader/BinaryWriter длиной 1000 байт, каждая запись составляет 50 байт. Как я могу удалить записи в позиции 350-550 и в конце сохранить оставшиеся 800 байт в моем файле?Устранение данных из двоичного файла

+0

Проще всего было бы просто прочитать и сохранить первые 7 записей, прочитать еще 4, что вы выбрасываете и, наконец, читаете и сохраняете остальные ...? –

ответ

2

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

В теории вы можете получить в том же файле, переписывая «старые» данные новыми данными, но я бы лично пошел на простой подход там, где это возможно. Это также означает, что если что-то не удается на полпути, у вас все еще есть исходный файл и «плохой» файл, который можно просто удалить, а не файл, который может содержать несколько записей дважды.

1

Вы должны прочитать данные из позиции 550 до конца файла, и пишет, что в положении 350.

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

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

Смежные вопросы