MFC下的文件类

MFC下的文件类文件操作的方法使用VisualC++编程,有如下方法进行文件操作:(1)使用标准C运行库函数,包括fopen、fclose、fseek等。(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win16向后兼容。(3)使用Win32下的文件和目录操作函数,如CreateFile,CopyFile,DeleteFile,FindNextFile,等等。Win32下,打开和创建文件都由CreateFile完成,成功的话,得到一个Win32下的句柄,这不同于“C”的fopen返回的句柄。在Win16下,该句柄和C运行库文件操作函数相容。但在Win32下,“C”的文件操作函数不能使用该句柄,如果需要的话,可以使用函数_open_osfhandle从Win32句柄得到一个“C”文件函数可以使用的文件句柄。关闭文件使用Win32的CloseHandle。在Win32下,CreateFile可以操作的对象除了磁盘文件外,还包括设备文件如通讯端口、管道、控制台输入、邮件槽等等。(4)使用CFile和其派生类进行文件操作。CFile从CObject派生,其派生类包括操作文本文件的CStdioFile,操作内存文件的CmemFile,等等。CFile是建立在Win32的文件操作体系的基础上,它封装了部分Win32文件操作函数。最好是使用CFile类(或派生类)的对象来操作文件,必要的话,可以从这些类派生自己的文件操作类。统一使用CFile的界面可以得到好的移植性。MFC的文件类MFC用一些类来封装文件访问的Win32API。以CFile为基础,从CFile派生出几个类,如CStdioFile,CMemFile,MFC内部使用的CMiororFile,等等。1.CFile的结构1.CFile定义的枚举类型CFile类定义了一些和文件操作相关的枚举类型,主要有四种:OpenFlags,Attribute,SeekPosition,hFileNull。下面,分别解释这些枚举类型。1.OpenFlagsOpenFlags定义了13种文件访问和共享模式:enumOpenFlags{//第一(从右,下同)至第二位,打开文件时访问模式,读/写/读写modeRead=0x0000,modeWrite=0x0001,modeReadWrite=0x0002,shareCompat=0x0000,//32位MFC中没用//第五到第七位,打开文件时的共享模式shareExclusive=0x0010,//独占方式,禁止其他进程读写shareDenyWrite=0x0020,//禁止其他进程写shareDenyRead=0x0030,//禁止其他进程读shareDenyNone=0x0040,//允许其他进程写//第八位,打开文件时的文件继承方式modeNoInherit=0x0080,//不允许子进程继承//第十三、十四位,是否创建新文件和创建方式modeCreate=0x1000,//创建新文件,文件长度0modeNoTruncate=0x2000,//创建新文件时如文件已存在则打开//第十五、十六位,文件以二进制或者文本方式打开,在派生类CStdioFile中用typeText=0x4000,typeBinary=(int)0x8000};2.AttributeAttribute定义了文件属性:正常、只读、隐含、系统文件,文件或者目录等。enumAttribute{normal=0x00,readOnly=0x01,hidden=0x02,system=0x04,volume=0x08,directory=0x10,archive=0x20}3.SeekPositionSeekPosition定义了三种文件位置:头、尾、当前:enumSeekPosition{begin=0x0,current=0x1,end=0x2};4.hFileNullhFileNull定义了空文件句柄enum{hFileNull=-1};CFile的其他一些成员变量CFile除了定义枚举类型,还定义了一些成员变量。例如:UINTm_hFile该成员变量是public访问属性,保存::CreateFile返回的操作系统的文件句柄。MFC重载了运算符号HFILE来返回m_hFile,这样在使用HFILE类型变量的地方可以使用CFile对象。BOOLm_bCloseOnDelete;CStringm_strFileName;这两个成员变量是protected访问属性。m_bCloseOnDelete用来指示是否在关闭文件时删除CFile对象;m_strFileName用来保存文件名。CFile的成员函数CFile的成员函数实现了对Win32文件操作函数的封装,完成以下动作:打开、创建、关闭文件,文件指针定位,文件的锁定与解锁,文件状态的读取和修改,等等。其中,用到了m_hFile文件句柄的一般是虚拟函数,和此无关的一般是静态成员函数。一般地,成员函数被映射到对应的Win32函数,如表11-1所示。表11-1CFile函数对Win32文件函数的封装虚拟静态成员函数对应的Win32函数文件的创建、打开、关闭√AbortCloseHandle√DuplicateDuplicateHandle√OpenCreateFile√CloseCloseHan...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?