CFile::CFile

CFile( );
CFile(int hFile);
CFile(LPCTSTR lpszFileName,UINT nOpenFlags);
  throw(CFileException);

参数:
hFile已打开的文件句柄。
lpszFileName所需文件的路径字符串,此路径可为相对的也可为绝对的路径。
nOpenFlags共享和访问模式,指定当打开文件时进行的动作,可以将以下所列用OR(|)操作符联起来。至少应有一个访问权限和一个共享选项,modeCreate和modeNoInherit是可选的。值如下所示:
·CFile::modeCreate调用构造函数构造一个新文件,如果文件已存在,则长度变成0。
·CFile::modeNoTruncate此值与modeCreate组合使用。如果所创建的文件已存在则其长度不变为0。因而此文件被打开,或者作为一个新文件或者作为一个已存在的文件。这将是很有用的,例如当打开一个可能存在也可能不存在的文件时。这个选项也可用于CStdioFile.
·CFile::modeRead打开文件仅供读。
·CFile::modeReadWrite打开文件供读写。
·CFile::modeWrite打开文件仅供写。
·CFile::modeNoInherit阻止文件被子进程继承。
·CFile::ShareDenyNone不禁止其它进程读或写访问,打开文件。如果文件已被其它进程以兼容模式打开,则Create失败。
·CFile::ShareDenyRead打开文件,禁止其它进程读此文件。如果文件已被其它进程以兼容模式打开,或被其它进程读,则Create失败。
·CFile::ShareDenyWrite打开文件,禁止其它进程写此文件。如果文件已被其它进程以兼容模式打开,或被其它进程写,则Create失败。
·CFile::ShareExclusive以独占模式打开文件,禁止其它进程对文件的读写。如果文件已经以其它模式打开读写(即使被当前进程),则构造失败。
·CFile::ShareCompat此标志在32位MFC中无效。此标志在使用CFile::Open时映射为CFile::ShareExclusive。
·CFile::typeText对回车换行设置特殊进程(仅用于派生类)。
·CFile::typeBinary设置二进制模式(仅用于派生类)。


说明:
缺省的构造函数不打开文件,而是将m_hFile设置为CFile::hFileNull。因为此构造函数不产生异常,故不使用TRY/CATCH逻辑操作。使用Open成员函数,然后直接测试异常状态。有关异常处理的策略,可参阅联机文档“Visual C++程序员指南”中的“异常”。
带一个参数的构造函数构造一个CFile对象,对应于由hFile标识的操作系统文件。对访问模式或文件类型不作检查。当CFile对象被析构时,操作系统文件不会关闭,必须手工关闭它。
带两个参数的构造函数构造一个CFile对象,并打开给定路径的相对应的操作系统文件。构造函数将第一个构造函数和Open成员函数组合起来。当打开文件出错时产生一个异常。通常这说明这种错误不可解决,用户将被警告。

示例:
// example for CFile::CFile
char* pFileName = "test.dat";
TRY
{
  CFile f(pFileName, CFile::modeCreate | CFile::modeWrite);
}

CATCH(CFileException,e)
{
  #ifdef _DEBUG
     afxDump<<"File could not be opened"<<e->m_cause<<"\n";
  #endif
}

END_CATCH