Какой лучший способ обновить запись файла в c? - PullRequest
0 голосов
/ 01 декабря 2011

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

Загрузить все записи в память, внести изменения, а затем просто переписать файл с изменениями? Или создайте файл tmp, найдите данные для обновления, скопируйте все данные в файл tmp, удалите старый файл и переименуйте tmp в исходное имя?

Любые другие мнения приветствуются! Спасибо!

Ответы [ 2 ]

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

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

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

Первый - это риск повреждения файла, если что-то пойдет не так с записью.

Второй - самый безопасный, но включает в себя две копии данных на диске.Также требуется больше прав доступа к файлу (удалить файл, создать новый, переименовать и т. Д.).Кстати, в системах, которые его поддерживают, вы, вероятно, захотите разрешить операции переименования удалить исходный файл для вас без отдельного шага удаления.

Оба метода нецелесообразны, если файл очень большой.В этом случае вам, вероятно, нужно обновить данные на месте.Борьба с возможной коррупцией сложнее - возможно, ведение журнала.

...