將資料序列化至檔案以及從檔案序列化資料
持續性的基本概念是,物件應該能夠將其成員變數的值所表示的目前狀態寫入永續性儲存體。 稍後,可以藉由讀取或「還原序列化」物件,從永續性儲存體重新建立物件的狀態。 這裡的重點是物件本身負責讀取和寫入自己的狀態。 因此,若要讓類別持續運作,它必須實作基本的序列化作業。
此架構提供預設實作,用於將檔儲存至磁片檔案,以回應 [檔案] 功能表上的 [儲存和另存新檔] 命令,以及從磁片檔案載入檔以回應 Open 命令。 使用很少的工作,您可以實作檔在檔案中寫入和讀取其資料的能力。 您必須執行的主要作業是覆寫 檔類別中的 Serialize 成員函式。
MFC 應用程式精靈會在為您建立的檔類別中,放置成員 Serialize
函式的基本架構覆寫 CDocument
。 在實作應用程式的成員變數之後,您可以使用程式碼填入 Serialize
覆寫,以將資料傳送至連線至檔案的「封存物件」。 CArchive 物件類似于 C++ iostream 程式庫中的 cin 和 cout 輸入/輸出物件。 不過, CArchive
寫入和讀取二進位格式,而不是格式化的文字。
您想要深入瞭解什麼
檔在序列化中的角色
架構會在實作檔時呼叫檔 Serialize
的成員函式,自動回應 [檔案] 功能表的 [開啟]、[儲存] 和 [另存新檔] 命令。 例如,ID_FILE_OPEN命令會呼叫應用程式物件中的處理常式函式。 在此程式期間,使用者會看到並回應 [開啟檔案] 對話方塊,而架構會取得使用者選擇的檔案名。 架構會建立物件 CArchive
集,以便將資料載入檔,並將封存傳遞至 Serialize
。 架構已經開啟檔案。 您檔 Serialize
成員函式中的程式碼會透過封存讀取 中的資料,並視需要重新建構資料物件。 如需序列化的詳細資訊,請參閱序列化 一文 。
資料在序列化中的角色
一般而言,類別類型資料應該能夠序列化本身。 也就是說,當您將物件傳遞至封存時,物件應該知道如何將自己寫入封存,以及如何從封存讀取本身。 MFC 支援以這種方式序列化類別。 如果您設計類別來定義資料類型,而且您想要序列化該類型的資料,請針對序列化進行設計。