文件操作及序列化知識摘記

2021-07-09 03:49:51 字數 1607 閱讀 9883

在計算機程式設計中,讓物件資料永續性的過程就稱之為序列化或序列化。而利用carchive類可進行序列化操作。

1.carchive 物件提供了乙個型別安全緩衝機制,用於將可序列化物件寫入 cfile 物件或從中讀取可序列化物件。通常,cfile 物件表示磁碟檔案;但是,它也可以是表示「剪貼簿」的記憶體檔案(csharedfile 物件)。

carchive(cfile*pfile,uintnmode,int nbufsize=4096,void*lpbuf=null );

pfile

cfile物件的

指標。cfile物件是永久資料的最終的源或目標。

nmode標識

它指定了物件是否從歸檔檔案中裝載或儲存到檔案中去。

nmode引數必須有下列值之一:

l carchive::load 從歸檔檔案裝載資料。cfile唯讀。

l carchive::store 把資料儲存到歸檔檔案中。允許cfile寫操作。

l carchive::bnoflushondelete 當歸檔檔案析構程式被呼叫時,防止歸檔檔案自動呼叫flush。如果設定了此標識,則在析構程式被呼叫之前必須負責呼叫close函式。如果不這樣做,資料就會崩潰。

nbufsize

指定內部檔案

緩衝區大小的整數,以

位元組計算。注意預設的緩衝區大小為4096位元組。如果例程歸檔大的物件,使用大一些的緩衝區,即多個檔案緩衝區,那麼將會提高例程的執行效率。

lpbuf

指向nbufsize大小的提供緩衝區的

指標。如果不指定這個引數,歸檔文 件從本地堆為歸檔檔案分配乙個緩衝區並且當物件被毀棄時,釋放緩衝 區。歸檔檔案不能釋放乙個提供的緩衝區。

2.cdocument::onnewdocument()  

建立乙個新文件時程式的訊息響應函式,一般用於編寫建立新文件時使用者對自己文件物件的內容初始化內容。

bool cdocument::onnewdocument()  

//清除老文件內容

3.cobject::serialize從檔案檔案中讀取該物件或向檔案檔案中寫入該物件。

virtual void serialize(carchive&ar);

throw(

cmemoryexception);

throw(

carchiveexception);

throw(

cfileexception);

引數:

ar 被

序列化的carchive物件。 



5.如果要使乙個類可序列化,可以經過以下五個步驟來實現:

1>從cobject派生類(或從cobject派生的某個類派生);

2>重寫serialize成員函式;

3>使用declare_serial巨集(在類宣告中)。即declare_serial(class_name)

4> 定義不帶引數的建構函式;

5>為類在實現檔案中使用implement_serial巨集。即implement_serial(class_name,base_class_name,wschema)

6.

單文件及文件的序列化

1 建乙個單文件的專案 文件 2 寫乙個畫直線 矩形 橢圓的 3 建乙個mfc的類cgraph基於cobject 4 在graph.h中加 cgraph int,cpoint,cpoint declare serial cgraph int m ntype cpoint m ptorigin cpo...

vc文件序列化

1.carchive在選單開啟儲存時的 cfile file 1.txt cfile modecreate cfile modewrite carchive ar file,carchive store int i 4 char ch a float f 1.3f cstring str ar 以上...

MFC 文件序列化

一 建立乙個序列化類的五個步驟 參考msdn cobject serilize 1 建立乙個可序列化類,可序列化類都是從cobject繼承而來 2 過載serialize成員函式 3 在類宣告中使用declare serial巨集 4 定義乙個沒有引數的建構函式 5 在實現檔案中使用implemen...