mfc 教程
源代码在线查看: untitled-03.txt
如果文件不能打开, CFile的构造函数会引发一个 CFileException。因此,利用 CFile:: CFile打
开文件的代码通常使用try和catch块来俘获错误:
try
CFile f。ie(_T(”F。ie.txt”),CFlle::rnodeReadwr。ie);
S
catch(CFileException。 e)争
//Something went wrong.
e> ReportError();
e-> Delete();
于
是否删除MFC发送给您的CFileException对象,决定权在您。这就是在处理异常后该示例调
用Delete删除异常对象的原因。不想调用Delete的唯一场合是您要用throw重新发送异常,
但这种情况很少见。
如果需要创建一个新文件,而不是打开一个现存文件,则要在 CFile:: Open或 CFile构造
函数的第二个参数中包含一个 CFile:: modeCreate标志:
CFile file(T(”File.txt”), CFile::modeReadwritelCFile::modeCreate);
如果用这种方法创建的文件已存在,则截去它的长度到0。如果要创建一个不存在的文件,
或要在文件存在但没有被截去时打开该文件,则也要包含一个 CFile:: modeNoTruncate标志:
CFile file(_T(”File.txt”), CFile::modeReadwritelCFile::modeCreatel
CFile::。odeNoTruncate);
按这种方式打开文件基本上总是成功的,因为如果该文件还不存在,它能自动生成。
在默认方式下,用 CFile:: open或 CFile:: CFile打开文件会获得该文件的独占访问权,也
就是说,其他人不能再打开该文件。如果有必要,在打开文件时可以指定共享模式,明确地
允许其他人访问该文件。表6-l中是可选的4种共享模式。
表6-14种共享模式
共享模式说明
CFile:: shareDenrNone非独占访问权式打开文件
CFile:: sha。DenrRead禁止读访问权
CFile:: shareDenywrite禁止写访问权
CFile:: shareExclusive禁止读写访问权(默认值)
另外,还可以指定表6-2中的三种读/写访问权之一。