次の方法で共有


シリアル化機構のバイパス

ここまで記載されているように、フレームワークには、ファイル間でデータを読み書きするための既定の方法が提供されています。 アーカイブ オブジェクトを使用したシリアル化は、多数のアプリケーションのニーズに適しています。 このようなアプリケーションは、ファイルを完全にメモリに読み込み、ユーザーがファイルを更新してから、更新されたバージョンをディスクに再度書き込みます。

ただし、一部のアプリケーションではデータの操作方法が大きく異なります。これらのアプリケーションでは、アーカイブを介したシリアル化は適しません。 たとえば、データベース プログラム、大きなファイルの一部のみを編集するプログラム、テキスト専用ファイルを書き込むプログラム、データ ファイルを共有するプログラムなどです。

このような場合は、Serialize 関数をオーバーライドして、CArchive オブジェクトではなく CFile オブジェクトを介してファイル アクションを仲裁できます。

クラス CFileOpenReadWriteClose および Seek のメンバー関数を使用してファイルを開き、ファイル ポインター (シーク) をファイル内の特定のポイントに移動し、その時点でレコード (指定したバイト数) を読み取り、ユーザーがレコードを更新してから、もう一度同じポイントをシークし、レコードをファイルに書き戻します。 フレームワークによってファイルが開き、クラス CArchiveGetFile メンバー関数を使用して CFile オブジェクトへのポインターを取得できます。 さらに高度で柔軟な使用のために、クラス CWinAppOnOpenDocument および OnSaveDocument のメンバー関数をオーバーライドできます。 詳細については、「MFC リファレンス」のクラス CFile を参照してください。

このシナリオの Serialize は、ドキュメントが閉じるときにファイル ヘッダーを最新の状態に保つためにファイル ヘッダーを読み書きする場合を指定しない限り、オーバーライドは何も行いません。

関連項目

ドキュメントの使い方