Методы класса CArchive

Перед тем, как создать объект-архив класса CArchive, необходимо создать объект класса CFile. Связывая с объектом CFile файл на диске, нужно иметь в виду, что если нужно записать данные, то файл нужно открывать на запись, а если считать - то для чтения.

Конструктор класса CArchive имеет следующий вид:

CArchive(CFile* pFile, UINT nMode, int nBufSize=512, void* lpBuf=NULL);

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

Параметр nMode определяет, будут ли данные записываться в файл или считываться из него: CArchive::load (данные будут считываться из файла на диске), CArchive::store (данные будут записываться в файл на диске).

Для операций чтения и записи в файл класс CArchive выполняет буферизацию. Размер этого буфера определяется необязательным параметром nBufSize. По умолчанию используется буфер размером 512 байт.

Конструктор класса CArchive сам получает у операционной системы блок оперативной памяти для буфера. Однако с помощью необязательного параметра lpBuf программист может предоставить ему собственный буфер. В этом случае параметр nBufSize должен указывать размер этого буфера.

Созданный объект класса CArchive можно будет использовать только для записи или только для чтения. Если необходимо сначала считать данные, а потом записать, следует создать для этого два отдельных объекта класса CArhive.

Нельзя применять методы класса CFile для доступа к файлу во время его использования совместно с объектами класса CArchive. Запись, чтение или перемещение указателя файла может вызвать нарушения во внутренней структуре файла архива.

Как уже отмечалось, метод Serialize класса документа вызывается объектами-архивами, когда приложение при необходимости читает или записывает состояние этого документа, вызывая методы CArchive::ReadObject и CArchive::WriteObject для объекта-архива. При этом методу Serialize передается ссылка на объект-архив, который и вызывает методы чтения или записи.

После использования методов CArchive::ReadObject и CArchive::WriteObjec t для восстановления или записи объектов, необходимо закрыть используемый для этого объект класса CArchive. Для этого нужно вызвать метод CArchive::Close.

После вызова этого метода нужно закрыть файл, cвязанный с объектом CArchive, вызвав метод CFile::Close, и удалить сам объект класса CFile.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: