处理输入/输出的建议

是否使用基于文件的 I/O 取决于你如何响应以下决策树中的问题:

应用程序中的主要数据是否驻留在磁盘文件中

  • 是的,主数据驻留在磁盘文件中:

    应用程序是否在文件打开时将整个文件读入内存,并将整个文件写回到文件保存上的磁盘

    • 是:这是默认的 MFC 文档大小写。 使用 CDocument 序列化。

    • 否:这通常是基于事务的文件更新的情况。 按事务更新文件,不需要 CDocument 序列化。

  • 否,主数据不驻留在磁盘文件中:

    数据是否驻留在 ODBC 数据源中

    • 是的,数据驻留在 ODBC 数据源中:

      使用 MFC 的数据库支持。 本例的标准 MFC 实现包括一个 CDatabase 对象,如 MFC:将数据库类与文档和视图配合使用一文中所述。 应用程序还可以读取和写入辅助文件 - 应用程序向导的用途“数据库视图和文件支持”选项。 在这种情况下,你将对辅助文件使用序列化。

    • 否,数据不驻留在 ODBC 数据源中。

      本例示例:数据驻留在非 ODBC DBMS 中;数据通过一些其他机制(如 OLE 或 DDE)读取。

      在这种情况下,不会使用序列化,并且应用程序不会包含“打开”和“保存”菜单项。 你可能仍希望将 A CDocument 用作主基地,就像 MFC ODBC 应用程序使用文档来存储 CRecordset 对象一样。 但不会使用框架的默认文件打开/保存文档序列化。

为了支持“文件”菜单上的“打开”、“保存”和“另存为”命令,框架提供文档序列化。 序列化读取和写入数据(包括从类 CObject派生的对象)到永久存储(通常是磁盘文件)。 序列化易于使用并满足许多需求,但在许多数据访问应用程序中可能不合适。 数据访问应用程序通常按事务更新数据。 更新受事务影响的记录,而不是一次性读取和写入整个数据文件。

有关序列化的信息,请参阅 序列化

另请参阅

序列化:序列化与数据库输入/输出