Serializar datos en y desde archivos
La idea básica de la persistencia es que un objeto debe poder escribir su estado actual, indicado por los valores de sus variables miembro, en el almacenamiento persistente. Más adelante, para volver a crear el objeto, se puede leer o deserializar el estado del objeto del almacenamiento persistente. Lo importante a tener en cuenta es que el propio objeto es responsable de leer y escribir su propio estado. Por lo tanto, para que una clase sea persistente, debe implementar las operaciones de serialización básicas.
El marco proporciona una implementación predeterminada para guardar documentos en archivos de disco en respuesta a los comandos Guardar y Guardar como en el menú Archivo y para cargar documentos desde archivos de disco en respuesta al comando Abrir. Con muy poco esfuerzo, puede implementar la capacidad de un documento de escribir y leer sus datos hacia un archivo y desde el mismo. Lo principal que debe hacer es invalidar la función miembro Serialize en la clase de documento.
El Asistente para aplicaciones MFC coloca una invalidación del esqueleto de la CDocument
función miembro Serialize
en la clase de documento que crea automáticamente. Después de implementar las variables miembro de la aplicación, puede rellenar la invalidación Serialize
con código que envía los datos a un "objeto de archivo" conectado a un archivo. Un objeto CArchive es similar a los objetos de entrada/salida cin y cout de la biblioteca iostream de C++. Sin embargo, CArchive
escribe y lee formato binario, no el texto con formato.
Qué más quieres saber
Rol del documento en serialización
El marco responde automáticamente a los comandos Abrir, Guardar y Guardar como del menú Archivo llamando a la función miembro Serialize
del documento si se implementa. Por ejemplo, un comando ID_FILE_OPEN llama a una función de controlador en el objeto de aplicación. Durante este proceso, el usuario ve y responde al cuadro de diálogo Abrir archivo y el marco obtiene el nombre de archivo que el usuario elige. El marco crea un objeto CArchive
configurado para cargar datos en el documento y pasa el archivo a Serialize
. El marco ya ha abierto el archivo. El código de la función miembro del documento Serialize
lee los datos a través del archivo y reconstruye los objetos de datos según sea necesario. Para obtener más información sobre la serialización, consulte el artículo Serialización.
El rol de los datos en la serialización
En general, los datos de tipo de clase deben ser capaces de serializarse a sí mismos. Es decir, cuando se pasa un objeto a un archivo, el objeto debe saber cómo escribirse en el archivo y cómo leerse desde el archivo. MFC proporciona compatibilidad para hacer que las clases sean serializables de esta manera. Si diseña una clase para definir un tipo de datos y tiene previsto serializar los datos de ese tipo, diséñela para la serialización.