Partager via


La sérialisation des données vers et depuis des fichiers

L'idée de la persistance est qu'un objet doit pouvoir entrer son état actuel, indiquée par les valeurs de variables ses membres, dans un stockage permanent. Par la suite, l'objet peut être recréé par la lecture, ou la "désérialisation", de l'état de l'objet dans le stockage permanent. Un point clé est ici que l'objet lui-même est chargé de lire et d'écrire son propre état. Par conséquent, pour qu'une classe soit permanente, il doit implémenter les opérations de base de sérialisation.

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

L'Assistant d'Application MFC place une substitution squelette de la fonction membre Serialize de CDocument dans la classe de document qu'elle crée automatiquement. Après avoir mis les variables membres de votre application en place, vous pouvez compléter votre substitution de Serialize avec du code qui envoie les données dans un objet « archive » connecté à un fichier. Un objet de CArchive est similaire aux objets d'entrée/sortie cin et cout de la bibliothèque iostream C++. Toutefois, CArchive lit et écrit le format binaire, pas le texte mis en forme.

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Le rôle du document dans la Sérialisation

L'infrastructure 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 de ID_FILE_OPEN, par exemple, appelle une fonction gestionnaire de rôles dans l'objet d'application. Pendant ce processus, l'utilisateur visualise et répond à la boîte de dialogue ouverte de fichier et l'infrastructure obtient le nom de fichier que l'utilisateur choisit. L'infrastructure crée une installation d'un objet de CArchive pour charger des données dans le document et passe 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, reconstruisant les objets de données si nécessaire. Pour plus d'informations sur la sérialisation, consultez l'article Sérialisation.

Le rôle des données dans la sérialisation

En général les données de types de classe doivent se sérialiser elles-mêmes. Autrement dit, lorsque vous passez un objet à une archive, l'objet doit savoir comment s'écrire dans l'archive et comment se lire depuis l'archive. MFC fournit une aide pour rendre les classes sérialisables ainsi. Si vous concevez une classe pour définir un type de données et vous envisagez de sérialiser les données de ce type, concevez la sérialisation.

Voir aussi

Référence

Utilisation de documents