CArchive::CArchive

更新 : 2007 年 11 月

CArchive オブジェクトを構築し、オブジェクトの読み込み、または格納するかどうかを指定します。

CArchive(
   CFile* pFile,
   UINT nMode,
   int nBufSize = 4096,
   void* lpBuf = NULL 
);

パラメータ

  • pFile
    永続データの最終的な読み込み元、または読み込み先となる CFile オブジェクトへのポインタ。

  • nMode
    アーカイブから読み込むかアーカイブに格納するかを指定するフラグ。パラメータ nMode には、次のいずれかの値を指定する必要があります。

    • CArchive::load   アーカイブからデータを読み込みます。CFile 読み込みアクセス許可が必要です。

    • CArchive::store   データをアーカイブに保存します。CFile 書き込みアクセス許可が必要です。

    • CArchive::bNoFlushOnDelete   アーカイブ デストラクタを呼び出すときに、アーカイブで Flush が自動的に呼び出されないようにします。このフラグを設定する場合は、デストラクタを呼び出す前に、Close を明示的に呼び出す必要があります。デストラクタを呼び出す前に Close を明示的に呼び出さないと、データが破損します。

  • nBufSize
    内部ファイル バッファのサイズをバイト単位で指定する整数。バッファ サイズの既定値は 4,096 バイトです。大きなオブジェクトを通常どおりアーカイブする場合は、現在のファイルのバッファ サイズの倍数にあたる大きいバッファ サイズを使うと、パフォーマンスが向上します。

  • lpBuf
    ユーザーが指定したバッファ サイズ nBufSize への省略可能なポインタ。このパラメータを指定しない場合、アーカイブはローカル ヒープからバッファを割り当て、オブジェクトが破棄されると、割り当てたバッファを解放します。アーカイブは、ユーザーが指定したバッファを解放しません。

解説

アーカイブを作成した後は、この指定を変更できません。

アーカイブを閉じるまでは、CFile 操作を使用してファイルの状態を変更できません。アーカイブを閉じる前に CFile 操作を使用してファイルの状態を変更すると、アーカイブの整合性が失われます。シリアル化の実行中は、いつでもファイル ポインタの位置にアクセスできます。ファイル ポインタの位置にアクセスする場合は、GetFile メンバ関数からアーカイブのファイル オブジェクトを取得し、CFile::GetPosition 関数を使用します。ファイル ポインタの位置を取得する前に、CArchive::Flush を呼び出す必要があります。

使用例

CFile file;
TCHAR szBuf[512];
if( !file.Open(_T("CArchive__test__file.txt"), 
   CFile::modeCreate | CFile::modeWrite)) 
{
   #ifdef _DEBUG
     AFXDUMP(_T("Unable to open file\n"));
     exit(1);
   #endif
}
CArchive ar(&file, CArchive::store, 512, szBuf);

必要条件

ヘッダー : afx.h

参照

参照

CArchive クラス

階層図

CArchive::Close

CArchive::Flush

CFile::Close

その他の技術情報

CArchive のメンバ