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函数,此函数用于装载