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