Partager via


Sérialisation des données vers et depuis des fichiers

L’idée de base de la persistance est qu’un objet doit être en mesure d’écrire son état actuel, indiqué par les valeurs de ses variables membres, dans le stockage persistant. Plus tard, l’objet peut être recréé en lisant ou en désérialisant l’état de l’objet à partir du stockage persistant. Un point clé ici est que l’objet lui-même est responsable de la lecture et de l’écriture de son propre état. Ainsi, pour qu’une classe soit persistante, elle doit implémenter les opérations de sérialisation de base.

L’infrastructure fournit une implémentation par défaut pour enregistrer des documents dans des fichiers de disque en réponse aux commandes Enregistrer et Enregistrer sous dans le menu Fichier et pour charger des documents à partir de fichiers de disque en réponse à la commande Ouvrir. Avec très peu de travail, vous pouvez implémenter la capacité d’un document à écrire et lire ses données dans et à partir d’un fichier. La principale chose que vous devez faire est de remplacer la fonction membre Serialize dans votre classe de document.

L’Assistant Application MFC place un remplacement élémentaire de la CDocument fonction membre Serialize dans la classe de document qu’il crée pour vous. Après avoir mis les variables membres de votre application en place, vous pouvez compléter votre substitution Serialize avec du code qui envoie les données dans un "objet archive" connecté à un fichier. Un objet CArchive est similaire aux objets cin et cout input/output de la bibliothèque iostream C++. Toutefois, CArchive écrit et lit le format binaire, et non le texte mis en forme.

Que voulez-vous en savoir plus sur

Rôle du document dans la sérialisation

Le framework répond automatiquement aux commandes Ouvrir, Enregistrer et Enregistrer sous du menu Fichier en appelant la fonction membre Serialize du document si elle est implémentée. Une commande ID_FILE_OPEN, par exemple, appelle une fonction de gestionnaire dans l’objet d’application. Pendant ce processus, l’utilisateur voit et répond à la boîte de dialogue Ouvrir de fichier et l’infrastructure obtient le nom de fichier choisi par l’utilisateur. L’infrastructure crée un CArchive objet configuré pour charger des données dans le document et transmet l’archive à Serialize. L’infrastructure a déjà ouvert le fichier. Le code de la fonction membre Serialize de votre document lit les données à travers l'archive, en reconstruisant les objets de données selon les besoins. Pour plus d’informations sur la sérialisation, consultez l’article Sérialisation.

Rôle des données dans la sérialisation

En général, les données de type classe doivent être en mesure de sérialiser elles-mêmes. Autrement dit, lorsque vous passez un objet à une archive, l’objet doit savoir comment écrire lui-même dans l’archive et comment se lire à partir de l’archive. MFC prend en charge la création de classes sérialisables de cette façon. Si vous concevez une classe pour définir un type de données et que vous envisagez de sérialiser des données de ce type, concevez pour la sérialisation.

Voir aussi

Utilisation de documents