CArchive(
CFile* pFile,
UINT nMode,
int nBufSize = 4096,
void* lpBuf = NULL
);
? 参数pFile 指向需要进行串行化的CFile 对象。
? 参数nMode 设置创建对象的标志,如果设置了这个标志,则必须在销毁前调用Close
函数, 否则数据将会损坏。若取值为CArchive::load : 从文件中读取数据;
CArchive::store:向文件中保存数据;CArchive::bNoFlushOnDelete:防止CArchive 对
象在被销毁时自动调用Flush 函数进行更新。
? 参数nBufSize 设置缓冲区大小。
? 参数lpBuf 用于自定义缓冲区,取值为NULL 则由CArchive 自行处理。
下面是一段示例代码:
CFile file;
file.Open("1.dat", CFile::modeWrite); //打开1.dat 文件进行写cāo作
CArchive archive(&file, CArchive::stroe);; //创建一个对file 进行数据保存的文档对象
2.读写函数
(1)chā入运算符(<<)和提取运算符(>>)
这两个运算符分别用于保存和读取数据,在原型中可以看到CArchive 类为许多数据类型
进行了重载,这为数据的串行化提供了基础。
(2)Read()和Write()函数
这两个函数分别从文件中读取或写入原始的字节块。原型为:
UINT Read(
void* lpBuf,
UINT nMax
);
void Write(
const void* lpBuf,
UINT nMax
);
? 参数lpBuf:给出字节块的指针,用于保存数据或者从中读取数据。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·182·
? 参数nMax:用于确定最大的读写字节数。
? Read()函数返回值:返回实际读写的字节数。
(3)Flush()函数
该函数用于将缓冲区剩余的数据强制写入文件中。原型为:
void Flush( );
注意该函数只保证数据完全传送到指定的CFile 对象中,而且必须通过CFile::Close 才能
完成最终向磁盘写入数据的过程。
3.状态和标志函数
该类函数主要有IsLoading()和IsStoring()两个函数,这两个函数分别用于确定CArchive
对象是否处于读取状态,或者是否处于保存状态。其原型分别为:
BOOL IsLoading( ) const;
BOOL IsStoring( ) const;
4.Close()函数
该函数用于清空缓冲区,关闭CArchive 对