跳过序列化机制
如您所见,框架提供了一个在文件中读取和写入数据的默认方式。 通过存档对象进行序列化可满足很多应用程序的需求。 此类应用程序将文件完全读入内存,让用户更新文件,然后重新将更新的版本写入磁盘。
但是,某些应用程序对数据的操作方式差别很大,对于这些应用程序,通过存档进行序列化是不适合的。 示例包括数据库程序、仅编辑大文件的一部分的程序、写入纯文本文件的程序和共享数据文件的程序。
在这些情况下,可用不同的方式重写 Serialize 函数以通过 CFile 对象(而不是 CArchive 对象)调解文件操作。
可以使用类 CFile
的 Open
、Read
、Write
、Close
和 Seek
成员函数类来打开文件,将文件指针(寻找)移动到文件中的某个特定点,在该点读取记录(指定的字节数),让用户更新记录,然后再次寻找同一个点并将记录写回文件。 框架将为您打开文件,您可以使用类 GetFile
的 CArchive
成员函数获取指向 CFile
对象的指针。 对于更加复杂和灵活的用法,你可以重写类 CWinApp
的 OnOpenDocument 和 OnSaveDocument 成员函数。 有关详细信息,请参阅 MFC 参考 中的类 CFile。
在这种情况下,Serialize
重写不执行任何操作,除非您想让它在文档关闭时读取和写入文件头以使其保持最新(举例)。