[MFC]CFile类实现低级文件I/O

本文介绍了MFC中的CFile类,它封装了操作系统文件I/O操作,提供了低级文件读写功能。文章详细讲解了CFile的成员函数,包括获取文件路径、打开和关闭文件的方法,以及异常处理。此外,还讨论了文件的访问方式、共享权限和读写操作,特别提到了CStdioFile类在C语言风格文件操作中的应用。
摘要由CSDN通过智能技术生成

1. CFile类简介:

    1) CFile封装了操作系统对文件读写的相关操作API,是MFC中一种较为低级的I/O操作手段,MFC常用CArchive类对数据进行串行化写入读出磁盘;

    2) CFile的几个基本的数据成员:

         i. UINT m_hFile:即和CFile相关联的文件的句柄,实为文件描述符,是一个UINT型的值;

         ii. CString m_strFileName:即文件的名称,包含的是文件的完整的绝对路径名称;

    3) 和文件名有关的几个CFile的成员函数:

         i. 获取完整的绝对路径名:virtual CString CFile::GetFilePath() const;

         ii. 只获取文件名(不包括路径,但是包括后缀,比如note.txt):virtual CString CFile::GetFileName() const;

         iii. 只获取文件的标题(即不包括后缀,比如note.txt只返回note):virtual CString CFile:GetFileTitle() const;


2. 打开文件:

     i. 共有两种方法,一种是使用CFile的构造函数直接打开文件,另一种是使用CFile::Open函数打开,这两种函数都考虑到了文件打开失败的情形,因此需要进行相关的异常处理;

     ii. 构造函数打开:

          a. 函数原型:CFile::CFile(LPCTSTR lpszFileName, UINT nOpenFlags) throw(CFileException);

!!第一个参数是文件名,第二个参数是打开方式(只读、读写等),该函数还会抛出异常,可以通过该异常对象来查看是何种类型的异常

          b. 使用范例:

try
{
	CFile file(_T("File.txt"), CFile::modeReadWrite);
	...
}
catch (CFileException* e)
{
	e->ReportError();
	e->Delete();
};
!!这种方式必须要处理异常,如果不接受处理异常则异常将会抛向上一层函数,直至最终的操作系统,一般来说都是要在当前层的当前位置处理异常;

     iii. CFile::Open打开文件:

          a. 函数原型:virtual BOOL CFile::Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);

          b. 如果打开成功返回TRUE,否则返回FALSE,因此可以通过一个if语句判断文件是否打开成功,如果打开不成功则可以跳过或进行相应的处理,可以看到第三个参数就是用来接收抛出的异常,这项是可选的,如果你想查看异常类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值