CFile是MFC文件类的基类,主要是在开发MFC应用程序时对文件操作比较方便。下面主要记录CFile类中常用的成员函数。
1、打开文件
(1)CFile(LPCTSTR lpszFileName,UINT nOpenFlags);//是CFile类的一个构造函数
功能:打开一个文件
参数:lpszFileName 文件路径,此路径可为相对的也可为绝对的路径。
nOpenFlags 文件打开方式
其中打开方式nOpenFlags有以下取值:
CFile::modeCreate 构造新文件,若文件存在则设文件长度为0
CFile::modeNoTruncate 与modeCreate组合使用所创建的文件已存在则其长度不变为0。
CFile::modeRead 以读的方式打开文件
CFile::modeReadWrite 以读写的方式打开文件
CFile::modeWrite 以写的方式打开文件
CFile::modeNoInherit 阻止文件被子进程继承
CFile::modeShareDenyNone 不禁止其它进程读或写访问CFile::modeDenyRead 禁止其它进程读此文件
CFile::modeDenyWrite 禁止其它进程写此文件
CFile::ShareExcelusive 以独占方式打开文件,禁止其它进程对其读写
CFile::shareCompat 在open函数里与CFile::ShareExcelusive一样
CFile::typeText 对回车换行设置特殊进程(只用在派生类)
CFile::typeBinary 设置二进制模式(只用在派生类)
使用如下:
CFile file("D:\\1.txt",CFile::modeRead|CFile::mode::Write);
(2)virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
功能:打开文件
参数:lpszFileName 文件路径,此路径可为相对的也可为绝对的路径。
nOpenFlags 打开方式
pError 指向一个存在的文件异常对象,获取失败操作的状态。
返回值:打开成功返回TRUE,否则返回FLASE
使用如下:
CFile file;
File.open("D:\\1.txt",CFile::modeRead|CFile::modeWrite);//这里使用的参数pError的缺省值NULL;
2、关闭文件
virtual void Close( );
使用如下:
file.close();
3、写入/读出
(1)virtual UINT Read (void* lpBuf,UINT nCount);
功能:从文件中读取nCount个字节到lpBuf中
参数:lpBuf 用来读取数据的缓冲区
nCount 读取数据的最大字节数
返回值:实际读取的字节数
使用如下:
char lpBuf[128];
File.Read(lpBuf,100);//从文件中读取100个字节数到lpBuf中
(2)DWORD ReadHuge(void* lpBuffer,DWORD dwCount);
功能:读取超过64k字节数据到缓冲区中
参数:lpBufffer 用来读取数据的缓冲区
dwCount 读取数据的最大字节数
返回值:实际读取的字节数
用法与read一样
(3)virtual UINT Write(const void* lpBuf,UINT nCount);
功能:将缓冲区中的数据写入到文件中
参数:lpBuf 存放准备写入文件的数据缓冲区
nCount 写入文件的最大字节数
返回值:实际写入文件的字节数
使用如下:
char* lpBuf = "C++ Programming";
file.Write(lpBuf,sizeof(lpBuf));
(4)(DWORD WriteHuge(void* lpBuffer,DWORD dwCount);
功能:写入超过64k字节数据到文件中
参数:lpBufffer 用来存放准备写入数据的缓冲区
dwCount 写入数据的最大字节数
返回值:实际写入的字节数
用法与Write一样
4、定位文件
(1)virtual LONG Seek(LONG lOff,UINT nFrom);
功能:定位当前文件指针
参数:lOff 指针移动的字节数
nFrom 指针移动模式
移动模式有如下三种:
CFile::begin 从文件起始位置开始向后移动lOff个字节
CFile::current 从当前文件指针开始向后移动lOff个字节
CFile::end 从文件末尾开始向前移动lOff个字节(此时lOff应为负数)返回值:lOff合法,则Seek返回从文件开始起的新字节偏移量。否则值未定义并产生CFileException异常。
使用如下:
file.Seek(100,CFile::begin);//从文件起始位置向前移动100个字节
(2)void SeekToBegin();
功能:文件指针移到文件起始位置
使用如下:
file.SeekToBegin();
(3)void SeekToEnd();
功能:文件指针移到文件末尾
使用如下:
file.SeekToEnd();
(4)virtual DWORD GetLength( ) const;
功能:获取文件长度
返回值:文件的长度
使用如下:
DWORD Length;
Length = file.GetLength();
(5)virtual void SetLength(DWORD dwNewLen);
功能:设置文件长度
使用如下:
file.SetLength(1000);
5、文件路径
(1)virtual CString GetFilePath( )const;
功能:获取文件的完整路径
返回值:文件的完整路径
使用如下:
CString FilePath;
FilePath = file.GetFilePath();
(2)virtual void SetFilePath(LPCTSTR lpszNewName);
功能:设置文件的完整路径
使用如下:
file.SetFilePath("D:\\1.txt");
(3)virtual DWORD GetPosition ( )const;
功能:获取文件指针相对于起始位置的偏移量,经常与Seek一起用
返回值: 文件指针相对于起始位置的偏移量
(4)static void PASCAL Rename(LPCTSTR lpszOldName,LPCTSTR lpszNewName);
功能:改名指定文件
参数:lpszOldName 原文件完全路径
lpszNewName 新文件完全路径
使用如下:
file.Rename("D:\\1.txt","D:\\2.txt");
(5)static void PASCAL Remove(LPCTSTR lpszFileName);
功能:删除文件
参数:lpszFileName 需要删除的文件的相对路径或绝对路径
使用如下:
file.Remove("D:\\1.txt");