跳过序列化机制

如您所见,框架提供了一个在文件中读取和写入数据的默认方式。 通过存档对象进行序列化可满足很多应用程序的需求。 此类应用程序将文件完全读入内存,让用户更新文件,然后重新将更新的版本写入磁盘。

但是,某些应用程序对数据的操作方式差别很大,对于这些应用程序,通过存档进行序列化是不适合的。 示例包括数据库程序、仅编辑大文件的一部分的程序、写入纯文本文件的程序和共享数据文件的程序。

在这些情况下,可用不同的方式重写 Serialize 函数以通过 CFile 对象(而不是 CArchive 对象)调解文件操作。

可以使用类 CFileOpenReadWriteCloseSeek 成员函数类来打开文件,将文件指针(寻找)移动到文件中的某个特定点,在该点读取记录(指定的字节数),让用户更新记录,然后再次寻找同一个点并将记录写回文件。 框架将为您打开文件,您可以使用类 GetFileCArchive 成员函数获取指向 CFile 对象的指针。 对于更加复杂和灵活的用法,你可以重写类 CWinAppOnOpenDocumentOnSaveDocument 成员函数。 有关详细信息,请参阅 MFC 参考 中的类 CFile

在这种情况下,Serialize 重写不执行任何操作,除非您想让它在文档关闭时读取和写入文件头以使其保持最新(举例)。

另请参阅

使用文档