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