CFile письменный вопрос - PullRequest
       1

CFile письменный вопрос

0 голосов
/ 13 сентября 2011

В моем приложении MFC я использую класс CFile для записи данных в файл.Я сохраняю последовательность объектов класса CParagraph, используя метод Write () для каждого элемента данных по порядку.Затем я использую метод Read () для чтения из файла в память.Раньше один из членов CParagraph был типа int, но теперь мне нужно изменить его на size_t, так как int не может хранить данные достаточно большого размера.Если мое приложение считывает файл, созданный до этого изменения, а затем сохраняет объект CParagraph обратно в файл, размер size_t будет передан методу Write вместо размера int, поэтому файл будет расти.У меня такой вопрос: могут ли данные, записанные после изменения и сохранения объекта, быть перезаписаны и, таким образом, повреждены, потому что объект стал больше?

Спасибо.

1 Ответ

0 голосов
/ 13 сентября 2011

Да. Если что-либо в файле изменит размер, все, что после этого должно быть повторно сохранено.

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

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