檔案序列化

2022-08-21 04:18:11 字數 1813 閱讀 6806

1、概念-將資料以二進位製流的方式依次寫入到檔案或者從檔案中讀取的過程

2、相關類

carchive類 -完成具體的資料讀寫(可代替cfile類的read/write函式)

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

pfile:指向檔案物件的指標,該檔案物件是持久資料的最終**或目的地;

nmode:指定物件是被用來載入的還是用來儲存的標誌,包括:

carchive::load  --從存檔物件中裝載資料,要求cfile物件具有讀取訪問許可;

carchive::store  --將資料儲存到存檔物件中,要求cfile物件具有寫入訪問許可;

carchive::bnoflushondelete  --禁止存檔物件析構時自動呼叫存檔物件的flush操作;如果設定了此標誌,在存檔物件析構前必須顯式地呼叫close函式,否則資料將被破壞;

nbufsize:指定內部檔案緩衝區的大小,以位元組為單位;預設的緩衝區大小是4096位元組;

lpbuf:可選指標,指向使用者提供的大小為nbufsize的緩衝區;如果指定了這個引數,就要手工釋放這塊緩衝區;如果未指定這個引數,存檔物件將從應用程式的區域性堆中分配一塊緩衝區,且該物件銷毀時將釋放這塊記憶體;

3、使用

1)建立或者開啟檔案

cfile::open

2)檔案讀寫

構造carchive物件

資料讀寫

>> 讀操作

<< 寫操作

關閉carchive物件

carchive::close

3)關閉檔案

cfile::close

注意:1、檔案與carchive的模式要一致:

cfile::modewrite<-->carchive::store

cfile::moderead<-->carchive::load

2、資料讀寫的順序要一致

例:

/***寫操作***/

//構造cfile檔案物件

cfile file;

file.open("1.txt", cfile::modecreate | cfile::modewrite);

//構造存檔物件

carchive ar(&file, carchive::store);

int i = 4;

char ch = 'a';

float f = 1.3f;

cstring str = "hello world!";

//儲存資料

ar << i << ch << f << str;

ar.close();

file.close()

/***讀操作***/

//構造cfile檔案物件

cfile file;

file.open("1.txt", cfile::moderead);

//構造存檔物件

carchive ar(&file, carchive::load);

int i;

char ch;

float f;

cstring str;

cstring strresult;

//讀取資料

ar >> i >> ch >> f >> str;

ar.close();

file.close();

strresult.format("%d,%c,%f,%s", i, ch, f, str);

messagebox(strresult);

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

序列化(模型序列化 序列化巢狀)

from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...

檔案與序列化

carchive類 它沒有基類,它允許你儲存乙個複雜的物件網路在乙個永久的二進位制形式上,通常是硬碟,在這個物件被刪除之後保持永續性,以後可以從持久的儲存器上載入這個物件,在記憶體中重新構建它們,使物件永續性的過程叫序列化 序列化過程 將物件 資料寫到磁碟,物件刪除後,資料儲存在磁碟,當下次再呼叫資...