Поделиться через


CArchive::CArchive

Создает объект CArchive и определяет, будет ли он используется для загрузки и хранения объектов.

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

Параметры

  • pFile
    Указатель на объект CFile, как правило, источник или назначение постоянных данных.

  • nMode
    Пометить который определяет, будут ли объекты загружены либо из сохраняются в архив.Параметр nMode должен иметь одно из следующих значений:

    • Загружает данные CArchive::load из архива.Требует разрешения CFile только для чтения.

    • CArchive::store сохраняет данные в архив.Требует разрешения записи CFile.

    • Архив CArchive::bNoFlushOnDelete предотвращает автоматическую вызвать деструктор вызывается при Flush архива.Если установлен этот пометить, ответственность за явно вызывать Закрыть, прежде чем вызывать деструктор.Если этого не сделать, то данные будут повреждены.

  • nBufSize
    Целое число, задающее размер внутреннего файлового буфера в байтах.Обратите внимание, что размер буфера по умолчанию равен 4.096 байт.Если обычного сжатия больших объектов, то повышение производительности при использовании больший размер буфера, кратной размеру файлового буфера.

  • lpBuf
    Необязательный указатель на пользователь- предоставленный буфер размером nBufSize.Если этот параметр не указан, то архив выделяет буфер из локальных кучи и свободенов его, когда объект уничтожается.Архив пользователь- не освобождает предоставленный буфер.

Заметки

Невозможно изменить эта спецификация после создания архива.

Нельзя использовать операции CFile чтобы изменить состояние файла до тех пор, пока не будет закрыть в архиве.Любая операция повредит целостность архива.Можно получить доступ к положению указателя файла в любой момент во время сериализации путем получения объекта архивного файла из функции-члена GetFile а затем с помощью функции CFile::GetPosition.Необходимо вызвать CArchive::Flush до получения положение указателя файла.

Пример

CFile file;
TCHAR szBuf[512];
if( !file.Open(_T("CArchive__test__file.txt"), 
   CFile::modeCreate | CFile::modeWrite)) 
{
   #ifdef _DEBUG
     AFXDUMP(_T("Unable to open file\n"));
     exit(1);
   #endif
}
CArchive ar(&file, CArchive::store, 512, szBuf);

Требования

Header: afx.h

См. также

Ссылки

Класс CArchive

Диаграмма иерархии

CArchive::Close

CArchive::Flush

CFile::Close