Cериализация для начинающих - Часть 1
ОГЛАВЛЕНИЕ
Это руководство описывает легкий способ перевода простого объекта в последовательную форму.
Данная статья является первой частью руководства по сериализации, состоящего из трех частей.
- Часть 1 является введением в основы сериализации.
- Часть 2 объясняет, как обрабатывать чтение данных из неисправных хранилищ данных и поддерживать контроль версий.
- Часть 3 описывает, как переводить в последовательную форму сложные объекты.
Сериализация - это процесс записи или чтения объекта на или из постоянного носителя информации, такого как дисковый файл. Сериализация объекта требует трех составляющих:
- Объект CFile, представляющий файл данных.
- Объект CArchive, обеспечивающий контекст сериализации.
- Объект, подвергающийся сериализации.
Шаг 1 – Открытие файла данных
Чтобы сериализовать объект в файл "foo.dat", откройте файл с соответствующим режимом доступа. В данном примере файл открывается в режиме монопольного доступа для чтения/записи.
// Открываем файл "foo.dat"
CFile* pFile = new CFile();
ASSERT (pFile != NULL);
if (!pFile->Open ("foo.dat", CFile::modeReadWrite | CFile::shareExclusive)) {
// Обрабатываем ошибку
return;
}
Шаг 2 – Подключение архива
Затем к файлу подключается объект CArchive. Архив предоставляет эффективный канал связи с постоянным хранилищем. Вместо прямого чтения из файла или записи в файл вы сериализуете данные в архив или из архива. Архиву необходимо знать, собираетесь ли вы его использовать для чтения или для записи данных. В этом примере осуществляется запись данных.
// Создание архива ...
bool bReading = false; // ... для записи
CArchive* pArchive = NULL;
try
{
pFile->SeekToBegin();
UINT uMode = (bReading ? CArchive::load : CArchive::store);
pArchive = new CArchive (pFile, uMode);
ASSERT (pArchive != NULL);
}
catch (CException* pException)
{
// Обработка ошибки
return;
}