建立 CArchive 物件的兩種方式
建立 CArchive
物件的方法有兩種:
透過架構隱含建立 CArchive 物件
最常見的最簡單方式是讓架構代表 [檔案] 功能表上的 [儲存]、[另存新檔] 和 [開啟] 命令,為您的檔建立 CArchive
物件。
當您的應用程式使用者從 [檔案] 功能表發出 [另存新檔] 命令時,架構會執行下列動作:
顯示 [ 另存新檔] 對話方塊,並從使用者取得檔案名。
將使用者所命名的檔案開啟為
CFile
物件。CArchive
建立指向這個CFile
物件的 物件。 在建立物件時CArchive
,架構會將模式設定為「store」(寫入、序列化),而不是「載入」(read、deserialize)。Serialize
呼叫衍生CDocument
類別中定義的函式,並將參考CArchive
傳遞給 物件。
檔函 Serialize
式接著會將資料 CArchive
寫入物件,如下所述。 從函 Serialize
式傳回時,架構會 CArchive
終結 物件,然後 CFile
終結 物件。
因此,如果您讓架構建立 CArchive
檔的物件,您只需要實作檔的 Serialize
函式,以寫入和讀取封存。 您也必須 Serialize
實作檔函 Serialize
式直接或間接序列化的任何 CObject
衍生物件。
明確建立 CArchive 物件
除了透過架構序列化檔之外,有時候您可能需要 CArchive
物件。 例如,您可能想要將資料序列化至剪貼簿,以及物件所 CSharedFile
代表的資料。 或者,您可能想要使用使用者介面來儲存與架構所提供的檔案不同的檔案。 在此情況下,您可以明確地建立 CArchive
物件。 您可以使用下列程式,以架構的相同方式執行此動作。
明確建立 CArchive 物件
建構 物件
CFile
或衍生自CFile
的物件。將
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();