CArchive オブジェクトとは
CArchive
オブジェクトは、CFile
オブジェクトとの間でシリアル化可能なオブジェクトの書き込みまたは読み取りを行うためのタイプ セーフなバッファーリング メカニズムを提供します。 通常、CFile
オブジェクトはディスク ファイルを表しますが、おそらくはクリップボードを表すメモリ ファイル (CSharedFile
オブジェクト) である場合もあります。
特定の CArchive
オブジェクトでは、データを格納 (書き込み、シリアル化) するか、データの読み込み (読み取り、逆シリアル化) を行いますが、両方を行うことはありません。 CArchive
オブジェクトの有効期間は、ファイルとの間でのオブジェクトの書き込みまたは読み取りのためのパス スルー 1 回に制限されます。 したがって、データをファイルにシリアル化し、ファイルから逆シリアル化するには、連続して作成された 2 つの CArchive
オブジェクトが必要になります。
アーカイブによってオブジェクトがファイルに格納されると、オブジェクトに CRuntimeClass
名がアタッチされます。 その後、別のアーカイブによってオブジェクトがファイルからメモリに読み込まれると、オブジェクトの CRuntimeClass
に基づいて CObject
派生オブジェクトが動的に再構築されます。 格納アーカイブによって特定のオブジェクトがファイルに書き込まれると、そのオブジェクトは複数回参照される場合があります。 ただし、読み込みアーカイブでは、オブジェクトは 1 回だけ再構築されます。 アーカイブがオブジェクトに CRuntimeClass
情報をアタッチし、考えられる複数の参照を考慮してオブジェクトを再構築する方法の詳細については、テクニカル ノート 2 を参照してください。
データがアーカイブにシリアル化されるにつれ、バッファーがいっぱいになるまでアーカイブはデータを蓄積します。 その後、アーカイブは、CArchive
オブジェクトが指す CFile
オブジェクトにバッファーを書き込みます。 同様に、アーカイブからデータを読み取る際は、アーカイブはファイルからバッファーにデータを読み取り、次にバッファーから逆シリアル化されたオブジェクトにデータを読み取ります。 このバッファリングにより、ハード ディスクが物理的に読み取られる回数が減ることで、アプリケーションのパフォーマンスが向上します。