CArchive没有基类。
CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络。可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们,使得数据永久保留的过程就叫做“串行化”。
可以把一个archive对象看做一种二进制流。像输入/输出流一样,archive与一个文件相关联并且允许缓冲区从硬盘读出或读入数据。输入/输出流一样处理一系列的ASCII字符串,archive以高效无冗余的格式处理二进制数据。
必须在创建一个CArchive对象之前,创建一个CFile对象。必须确定archive的加载/存储与file的打开模式相容。每个file只能对应于一个active archive。
当你创建一个CArchive对象时,你就将它分配给一个CFile类(或者派生自CFile的类)的对象,此对象代表一个打开的文件。你同时确定可此archive将被用于加载还是存储。CArchive不仅可以处理简单的类型,也可以处理从CObject派生的类所产生的对象,此对象被设计用于Serialization。
CArchive还支持使用MFC Windows套接字类CSocket和CSocketFile编程。
CArchive类的成员:
数据成员:
m_pDocument指向被串行化的CDocument对象
构造函数:
CArchive:创建一个CArchive对象
Abort:在不异常的情况下,关闭archive
Close:冲掉未写入数据并且释放与CFile的连接
基础输入/输出:
Flush:从archive文件缓冲区中冲掉未写入数据
运算符>>:从archive中加载对象或者简单类型数据
运算符<<:向archive中存储对象或者简单类型数据
Read:读入原始类型
Write:写入原始类型
WriteString:写一行文本
ReadString:读一行文本
状态:
GetFile:获得此archive的CFile对象指针
GetObjectSchema:由Serialize函数调用,来确定被串行化的对象的版本
IsBufferEmpty:确定在一个Windows Socket接收过程中缓冲区是否被清空
IsLoading:确定archive文件是否被装载
IsStoring:确定archive文件是否被存储
SetObjectSchema:设置在archive文件中存储的对象概要
对象输入/输出 :
MapObject:在没有对文件串行化的映射中放置对象,但是此映射对参考的子对象有效
ReadClass:读入一个原先存储在WriteClass中的类的参考
ReadObject:调用对象用于装载的Serialize函数
SerializeClass:根据CArchive方向,读入或写入与CArchive对象有关联的类
SetLoadParams:设置加载数组增长的大小,须在对象加载之前调用,或者在MapObject
和ReadObject之前调用
SetStoreParams:设置哈希表的大小和映射的块的大小,映射块在串行化的过程中识别对象
WriteClass:把CRuntimeClass的参考写入CArchive
WriteObect:调用一个对象的Serialize函数,此函数用于装载