CFile类是MFC文件类的基类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。
CFile与CArchive类共同使用,支持MFC对象的串行化。该类与其派生类的层次关系让程序通过多形CFile接口操作所有文件对象。例如,一个内存文件相当一个磁盘文件。使用CFile及其派生类进行一般目的的磁盘I/O,使用ofstream或其它Microsoft输入输出流类将格式化文本送到磁盘文件。
通常,一个磁盘文件在CFile构造时自动打开并在析构时关闭。静态成员函数使你可以在不打开文件的情况下检查文件状态。
1、CFile::Close 关闭文件,使该文件不可用于读写
virtual void Close();
2、CFile::GetLength 求文件长度(以字节计)
virtual DWORD GetLength()const;
返回值:文件长度
3、CFile::Open 打开文件
virtual BOOL Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pError=NULL);
参数:lpszFileName指定打开文件的路径;
nOpenFlags 定义文件的共享和存取方式;
pError指向一个已有的文件异常对象的指针。
nOpenFlags的常用取值:
CFile::modeCreate 创建一个新文件,若文件已存在,则该文件被清空;
CFile::modeRead 用于只读;
CFile::modeReadWrite 用于读写;
CFile::modeWrite 用于只写;
CFile::modeNoInherit 阻止文件被子进程继承;
返回值:若打开成功,返回非0;否则返回0
4、CFile::Read 从文件中读一段数据到一缓冲区中
virtual UINT Read(void* lpBuf,UINT nCount);
参数:lpBuf指向用户定义的缓冲区;
nCount为要从文件中读出的最大字节数
返回值:传输给缓冲区的字节数,可小于nCount所指定的值
5、CFile::Rename 重命名文件(静态函数),目录不可重命名
static void PASCAL Rename(LPCTSTR lpszOldName,LPCTSTR lpszNewName);
参数:lpszOldName 旧路径名
lpszNewName 新路径名
6、CFile::Remove 删除指定文件(静态函数),不可删除目录
static void PASCAL Remove(LPCTSTR lpszFileName);
参数:lpszFileName指向删除文件的路径名字符串
7、CFile::Seek 定位当前文件指针
virtual LONG Seek(LONG lOff,UINT nFrom);
参数:lOff 指针移动的字节数,为正时,向后移动,为负时,向前移动
nFrom 指针移动方式,可以是下列值之一:
CFile::begin 将文件指针从文件头移动lOff个字节;
CFile::current 将文件指针从当前位置移动lOff个字节;
CFile::end 将文件指针从文件尾移动lOff个字节;
8、CFile::SeekToBegin 将文件指针设置到文件头,相当于Seek(0L,CFile::begin)
void SeekToBegin();
9、CFile::SeekToEnd 将文件指针设置到文件尾,相当于Seek(0L,CFile::end)
DWORD SeekToEnd();
返回值:文件的字节长度
10、CFile::Write 将数据从一缓冲区写入文件中
virtual void Write(const void* lpBuf,UINT nCount);
参数:lpBuf指向用户定义的缓冲区;
nCount为要从缓冲区传输的字节数
--------------------
值得注意的是CStdioFile是CFile的继承类,在直接对字符操作的时候用CStdioFile更好一些。