共用方式為


兩種方式可以建立一個 CArchive 物件

有兩種方法來建立CArchive物件:

  • 隱含建立 CArchive 物件透過架構

  • 明確建立 CArchive 物件

隱含建立 CArchive 物件透過架構

最常見及最簡單的方法是,讓架構建立CArchive代替儲存、 另存新檔或開啟的命令,在 [檔案] 功能表上的文件的物件。

下面是架構怎樣當應用程式的使用者發出 [檔案] 功能表的 [另存新檔] 命令時:

  1. 提供另存新檔 ] 對話方塊中,並取得使用者檔案名稱。

  2. 開啟的檔案名稱是使用者,作為CFile物件。

  3. 會建立CArchive物件,這會指向CFile物件。 在建立CArchive物件時,架構會設定模式,以 「 儲存 」 (寫入、 序列化),相對於 [載入] (讀取、 還原序列化)。

  4. 呼叫Serialize中所定義的函式您 CDocument-衍生的類別,將參考傳遞給它CArchive物件。

您的文件Serialize函式再寫入資料至CArchive物件,如稍後所述。 傳回從時您Serialize函式,架構會終結CArchive物件,然後CFile物件。

因此,如果您讓架構建立CArchive物件的文件中,您只需要已實作的文件Serialize函式撰寫和讀取封存的進出。 您也必須實作Serialize任何CObject-衍生物件的文件的Serialize直接或間接,依序將序列化函式。

明確建立 CArchive 物件

除了序列化透過架構文件,有其他有時候,您可能需要CArchive物件。 比方說,您可能想要將序列化資料以及從剪貼簿],以表示CSharedFile物件。 或者,您可能會想要用於儲存檔案以外的一個框架所提供的使用者介面。 如此一來,您可以明確建立CArchive物件。 只要同一個相同架構,使用下列程序。

若要明確建立 CArchive 物件

  1. 建構CFile物件衍生自CFile

  2. 傳遞CFile物件的建構函式CArchive,如下列範例所示:

    CFile theFile;
    theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite);
    CArchive archive(&theFile, CArchive::store);
    

    第二個引數, CArchive建構函式是列舉的值,指定是否將用於儲存或載入資料或從檔案中使用封存。 Serialize函式,物件會將此狀態檢查藉由呼叫IsStoring保存物件的函式。

當您完成將儲存或載入資料,或從CArchive物件,請將它關閉。 雖然CArchive (與CFile) 物件會自動關閉保存 (及檔案),是因為這樣會讓從錯誤中的復原更容易明確地執行,這很好的作法。 如需有關錯誤處理的詳細資訊,請參閱文章的例外狀況: 攔截和刪除例外狀況

若要關閉 CArchive 物件

  • 下列範例會說明如何關閉CArchive物件:

    archive.Close();
    theFile.Close();
    

請參閱

概念

序列化: 序列化物件