CArchive オブジェクトとは

更新 : 2007 年 11 月

CArchive オブジェクトは、タイプ セーフであるバッファリング機構を使って、シリアル化可能なオブジェクトを CFile オブジェクトへ書き込み、または CFile オブジェクトから読み取ります。通常、CFile オブジェクトはディスク ファイルを表しますが、メモリ ファイル (CSharedFile オブジェクト) の場合もあります。多くの場合、メモリ ファイルはクリップボードを表します。

任意の CArchive オブジェクトは、データの格納 (書き込み、シリアル化) か、データの読み込み (読み取り、逆シリアル化) のどちらかを行います。書き込みと読み取りの両方を 1 つのアーカイブで行うことはできません。CArchive オブジェクトは、ファイルへの書き込みまたはファイルからの読み取りを 1 回行うごとに生成され、破棄されます。したがって、データをファイルに書き込んで (シリアル化して)、それを再び読み取る (逆シリアル化する) には、2 つの CArchive オブジェクトが必要です。

アーカイブがオブジェクトをファイルに格納するとき、アーカイブはオブジェクトに CRuntimeClass 型で示される名前を付けます。後でほかのアーカイブがファイルからメモリにオブジェクトを読み込むときは、この CRuntimeClass 名に基づいて CObject 派生オブジェクトが動的に再生成されます。任意のオブジェクトは、格納を行うアーカイブによってファイルに書き込まれるため、複数回参照できます。ただし、読み込みを行うアーカイブはオブジェクトを 1 回しか再生成しません。アーカイブがオブジェクトに CRuntimeClass 名を結び付ける方法、オブジェクトを再生成する方法、および複数の参照を行う方法については、「テクニカル ノート 2: 永続オブジェクトのデータ形式」を参照してください。

データがシリアル化されてアーカイブへ送られるときは、バッファが使用されます。バッファがいっぱいになると、バッファ中のデータは CArchive オブジェクトが指す CFile オブジェクトに書き込まれます。同じように、アーカイブからデータを読み取るときも、アーカイブはまずファイルからバッファにデータを読み出してから、逆シリアル化されたオブジェクトにデータが送られます。このバッファリングによって、ハード ディスクを物理的に読み取る回数が減るので、アプリケーションのパフォーマンスが向上します。

参照

概念

シリアル化 : オブジェクトのシリアル化