对象 CArchive
提供一种类型安全的缓冲机制,用于向对象或从 CFile
对象写入或读取可序列化对象。 通常对象 CFile
表示磁盘文件;但是,它也可以是内存文件(CSharedFile
对象),也许表示剪贴板。
给定 CArchive
对象存储(写入、序列化)数据或加载(读取、反序列化)数据,但从不同时加载。 对象的生存期仅限于经过一次写入文件或从文件中读取对象的过程。 因此,需要连续创建两个 CArchive
对象,首先将数据序列化到文件,然后再从文件中反序列化回来。
当存档将对象存储在文件中时,存档会将 CRuntimeClass
名称附加到对象。 然后,当另一个存档将对象从文件加载到内存中时,CObject
派生的对象会根据对象的CRuntimeClass
被动态重构。 给定对象可以多次被引用,因为它被存储存档写入文件。 但是,加载存档将仅重新构造一次对象。
CRuntimeClass
中介绍了存档如何将信息附加到对象和重新构造对象,同时考虑可能的多个引用。
当数据序列化为存档时,存档将累积数据,直到其缓冲区已满。 然后,存档将其缓冲区写入由CFile
对象指向的CArchive
对象。 同样,从存档读取数据时,它会将数据从文件读取到其缓冲区,然后从缓冲区读取到反序列化的对象。 此缓冲可减少物理读取硬盘的次数,从而提高应用程序的性能。