Share via


Serialisieren von Daten in und aus Dateien

Die Grundidee der Persistenz besteht darin, dass ein Objekt seinen aktuellen Zustand schreiben kann, der durch die Werte seiner Membervariablen angegeben wird, in beständigen Speicher. Später kann das Objekt durch Lesen oder "Deserialisieren" des Zustands des Objekts aus dem beständigen Speicher neu erstellt werden. Ein wichtiger Punkt hier ist, dass das Objekt selbst für das Lesen und Schreiben seines eigenen Zustands verantwortlich ist. Damit eine Klasse dauerhaft ist, muss sie die grundlegenden Serialisierungsvorgänge implementieren.

Das Framework bietet eine Standardimplementierung zum Speichern von Dokumenten auf Datenträgerdateien als Reaktion auf die Befehle "Speichern" und "Speichern unter" im Menü "Datei" und zum Laden von Dokumenten aus Datenträgerdateien als Reaktion auf den Befehl "Öffnen". Mit sehr wenig Arbeit können Sie die Fähigkeit eines Dokuments zum Schreiben und Lesen seiner Daten in und aus einer Datei implementieren. Das Standard, was Sie tun müssen, besteht darin, die Memberfunktion serialisieren in Ihrer Dokumentklasse außer Kraft zu setzen.

Der MFC-Anwendungs-Assistent platziert eine Skelettüberschreibung der CDocument Memberfunktion Serialize in der Dokumentklasse, die sie für Sie erstellt. Nachdem Sie die Membervariablen Ihrer Anwendung implementiert haben, können Sie die Serialize Außerkraftsetzung mit Code ausfüllen, der die Daten an ein mit einer Datei verbundenes "Archivobjekt" sendet. Ein CArchive-Objekt ähnelt den cin - und cout-Eingabe -/Ausgabeobjekten aus der C++-iostream-Bibliothek. CArchive Schreibt und liest jedoch binärformat, nicht formatierten Text.

Was möchten Sie mehr über

Die Rolle des Dokuments bei der Serialisierung

Das Framework reagiert automatisch auf die Befehle "Öffnen", "Speichern" und "Speichern unter" des Menüs, indem die Memberfunktion des Serialize Dokuments aufgerufen wird, wenn es implementiert ist. Ein ID_FILE_OPEN-Befehl ruft beispielsweise eine Handlerfunktion im Anwendungsobjekt auf. Während dieses Vorgangs sieht und antwortet der Benutzer auf das Dialogfeld "Datei öffnen", und das Framework ruft den Dateinamen ab, den der Benutzer auswäht. Das Framework erstellt ein CArchive Objekt, das zum Laden von Daten in das Dokument eingerichtet ist, und übergibt das Archiv an Serialize. Das Framework hat die Datei bereits geöffnet. Der Code in der Memberfunktion Ihres Dokuments Serialize liest die Daten im Archiv und rekonstruiert datenobjekte nach Bedarf. Weitere Informationen zur Serialisierung finden Sie im Artikel Serialisierung.

Rolle der Daten bei der Serialisierung

Im Allgemeinen sollten Klassentypdaten in der Lage sein, sich selbst serialisieren zu können. Das heißt, wenn Sie ein Objekt an ein Archiv übergeben, sollte das Objekt wissen, wie man sich selbst in das Archiv schreibt und wie man sich selbst aus dem Archiv liest. MFC bietet Unterstützung für die serialisierbare Klassen auf diese Weise. Wenn Sie eine Klasse zum Definieren eines Datentyps entwerfen und Daten dieses Typs serialisieren möchten, entwerfen Sie die Serialisierung.

Siehe auch

Verwenden von Dokumenten