CArchive::CArchive

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

参数:
pFileCFile对象的指针。CFile对象是永久数据的最终的源或目标。
nMode标识。它指定了对象是否从归档文件中装载或存储到文件中去。nMode参数必须有下列值之一:
·CArchive::load从归档文件装载数据。CFile只读。
·CArchive::store把数据保存到归档文件中。允许CFile写操作。
·CArchive::bNoFlushOnDelete当归档文件析构程序被调用时,防止归档文件自动调用Flush。如果设定了此标识,则在析构程序被调用之前必须负责调用Close。如果不这样做,数据就会崩溃。
nBufSize指定内部文件缓冲区大小的整数,以字节计算。注意缺省的缓冲区大小为4096字节。如果例程归档大的对象,使用大一些的缓冲区,即多个文件缓冲区,那么将会提高例程的执行效率。
lpBuf指向nBufSize大小的提供缓冲区的指针。如果不指定这个参数,归档文件从本地堆为归档文件分配一个缓冲区并且当对象被毁弃时,释放缓冲区。归档文件不能释放一个提供的缓冲区。

说明:
构造CArchive对象并且指定它将用于装载或存储对象。在创建归档文件之后,不能改变这个指定内容。
不能使用CFile操作来改变文件的状态直到已经关闭归档文件时。任何这样的操作都将会毁弃归档文件的完整性。通过由GetFile成员函数获得归档文件的文件对象使得可在串行化过程中的任何时候访问文件指针的位置。然后使用CFile::GetPosition函数。应该在获得文件指针位置之前,调用CArchive::Flush。

示例:
extern char* pFileName;
CFile f;
char buf[512];
if(!f.Open( pFileName,CFile::modeCreate| CFile::modeWrite))
{
  #ifdef_DEBUG
     afxDump<< "Unable to open file"<< "\n"
     exit(1);
  #endif
}

CArchive ar( &f, CAchive::strore,512,buf);

请参阅:
CArchive::Close, CArchive::Flush, CFile::Close