今天對(duì)文件的保存與恢復(fù)進(jìn)行了學(xué)習(xí)共分為四個(gè)部分:
1 CFile類(lèi)
在MFC面向?qū)ο蟮木幊谭绞较乱蹲椋嘘P(guān)文件的輸入和輸出都是由CFile類(lèi)完成的追他。CFile是以二進(jìn)制方式讀取和寫(xiě)入的,是MFC中其他所有文件類(lèi)的基類(lèi)枯饿,它封裝了Win32 API 用來(lái)處理文件I/O的那些函數(shù)。
2 CArchive類(lèi)
Visual C++應(yīng)用程序中CArchive類(lèi)提供了一種對(duì)CFile類(lèi)進(jìn)行安全便利訪(fǎng)問(wèn)的方式诡必,利用CArchive類(lèi)來(lái)進(jìn)行文件的存儲(chǔ)和訪(fǎng)問(wèn)的過(guò)程也稱(chēng)為數(shù)據(jù)的串行化過(guò)程奢方。CArchive類(lèi)不能孤立存在。
串行化分為兩個(gè)部分
1.當(dāng)應(yīng)用程序數(shù)據(jù)以文件形式存儲(chǔ)在磁盤(pán)中時(shí)擒权,叫做串行化袱巨。
2.當(dāng)從文件中恢復(fù)應(yīng)用程序的狀態(tài)時(shí),則叫做反串行化碳抄。
3 類(lèi)對(duì)象的串行化
1 概念?? ? 序列化對(duì)象:將對(duì)象的類(lèi)的信息以及對(duì)象的成員變量以二進(jìn)制流的方式依次寫(xiě)入到文件的過(guò)程愉老。?? ? 反序列化對(duì)象:從文件中首先讀取類(lèi)的信息創(chuàng)建對(duì)象,然后讀取成員變量賦值給新建的對(duì)象的過(guò)程剖效。
2 定義支持序列化的類(lèi)????? 2.1 派生自CObject類(lèi)????? 2.2 在類(lèi)的定義中添加序列化的聲明宏 DECLARE_SERIAL(類(lèi)名)????? 2.3 在類(lèi)的實(shí)現(xiàn)中添加序列化的實(shí)現(xiàn)宏 IMPLEMENT_SERIAL(類(lèi)名, CObject,1)2.4 重寫(xiě)CObject::Serialize()虛函數(shù)嫉入,在函數(shù)中,完成成員變量的序列化璧尸。??
3 使用????? 在讀寫(xiě)對(duì)象時(shí)咒林,參數(shù)是對(duì)象的指針。對(duì)象裝載完畢后需要釋放指針指向的對(duì)象空間爷光。
4文件對(duì)話(huà)框
? 文件對(duì)話(huà)框分為打開(kāi)文件對(duì)話(huà)框和保存文件對(duì)話(huà)框垫竞。打開(kāi)文件對(duì)話(huà)框用于選擇要打開(kāi)的文件的路徑,保存文件對(duì)話(huà)框用來(lái)選擇要保存的文件的路徑蛀序。