编写文件IO最主要的是为了支持文档的存储和加载,尽管用CFile对象实现磁盘文档的读写没有什么困难,但大部分MFC应用程序不会这么做,而是用CArchive对象。
1CFile类
CFile是比较简单的类,它封装了Win32用来处理文件IO的那部分。在多于25个的成员函数中有用来打开和关闭文件的函数、读写文件数据的函数、删除和重命名文件的函数、检索文件信息的函数。它的public成员数据之一m_hFile保存了与CFile对象相关联的文件的句柄、protected成员m_strFileName保存着文件的名称。成员函数GetFilePath、GetFileName、GetFileTitle可以用来提取整个文件名或文件名的一部分。例如:如果完整的文件名和路径名为C:/personal/File.txt,那么GetFilePath返回整个字符串,GetFileName返回File.txt,GetFileTitle返回File。
但是如果细讲这些函数,就等于忽略了对编程人员来说CFile拥有的重要功能,即用来读写磁盘文件的函数。下面的几部分简要介绍了CFile的使用方法,以及错误发生时CFile的通知方式(如果从来没有用过C++异常处理,现在开始吧)。
1.1打开关闭和创建文件
用CFile打开文件有2中方法,第一种方法是构造一个没有初始化的CFile对象并调用CFile::Open。下面的代码段就用了这个方法打开一个具有读写访问权的文件File.txt。因为函数的第一个参数没有给出路径名,如果该文件不在当前目录下,Open就会失败。
CFile file;
if(file.Open("File.txt",CFile::modeReadWrite))
{
//It Worked
}
CFile::Open返回一个BOOL值,表示是否成功打开文件。返回非零值意味着文件打开了,零意味着文件没有打开。如果CFile::Open返回零,并且你想知道调用失败的原因,则创建一个CFileException对象并把它的地址传送到Open函数的第三个参数中。
- CFile file;
- CFileException e;
- if(file.Open("File.txt",CFi