После использования методов CArchive::ReadObject и CArchive::WriteObject для восстановления или записи объектов, необходимо закрыть используемый для этого объект класса CArchive. Для этого нужно вызвать метод CArchive::Close.
После вызова этого метода нужно закрыть файл, cвязанный с объектом CArchive, вызвав метод CFile::Close, и удалить сам объект класса CFile.
Запись в архивный файл
Когда приложение желает сохранить состояние объекта в файле, оно вызывает для него метод Serialize. В качестве параметра этому методу передается указатель на объект класса CArhive, связанный с файлом, открытым на запись.
Для того, чтобы определить, предназначен ли объект-архив для записи или для чтения, можно вызвать методы CArchive::IsLoading или CArchive::IsStoring.
Метод IsStoring возвращает ненулевое значение, если данный объект предназначен для записи в файл, и нуль в противном случае. Метод IsLoading является прямой противоположностью метода IsStoring. Можно использовать любой метод для определения режима работы с объектом-архивом.
В случае записи в архивный файл реализация метода должна сохранить в файле все элементы данных, которые потом потребуется восстановить. Для этого необходимо воспользоваться оператором << или методами WriteString и Write, определенными в классе CArchive.
Оператор << можно использовать, для записи в архивный файл переменных простых типов, например, long, int, char и объектов других классов, наследованных от класса CObject.
Для записи в архивный файл массивов удобнее использовать метод Write класса CArchive. Он позволяет записать в файл определенное количество байт из указанного буфера памяти.
Если требуется сохранить строку символов, закрытую нулем, то гораздо удобнее вместо метода Write использовать метод WriteString. Метод WriteString записывает в архивный файл строку, ограниченную нулевым символом.
Чтение из архивного файла
Опишем теперь, как восстановить записанное ранее состояние объекта из архивного файла.