共用方式為


建立 CArchive 物件的兩種方式

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

透過架構隱含建立 CArchive 物件

最常見的最簡單方式是讓架構代表 [檔案] 功能表上的 [儲存]、[另存新檔] 和 [開啟] 命令,為您的檔建立 CArchive 物件。

當您的應用程式使用者從 [檔案] 功能表發出 [另存新檔] 命令時,架構會執行下列動作:

  1. 顯示 [ 另存新檔] 對話方塊,並從使用者取得檔案名。

  2. 將使用者所命名的檔案開啟為 CFile 物件。

  3. CArchive建立指向這個 CFile 物件的 物件。 在建立物件時 CArchive ,架構會將模式設定為「store」(寫入、序列化),而不是「載入」(read、deserialize)。

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

檔函 Serialize 式接著會將資料 CArchive 寫入物件,如下所述。 從函 Serialize 式傳回時,架構會 CArchive 終結 物件,然後 CFile 終結 物件。

因此,如果您讓架構建立 CArchive 檔的物件,您只需要實作檔的 Serialize 函式,以寫入和讀取封存。 您也必須 Serialize 實作檔函 Serialize 式直接或間接序列化的任何 CObject 衍生物件。

明確建立 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 物件

  1. 下列範例說明如何關閉 CArchive 物件:

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

另請參閱

序列化:序列化物件