- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章MFC的文件处理机制
第9章 MFC的文件处理机制 MFC主要有两种文件处理机制: 一是通过CFile文件类对象处理文件的机制; 二是对象的序列化(serialization)机制 9.1 CFile类 MFC把系统的大多数文件操作函数都封装在CFile类中,用户可以通过CFile类及其派生类的对象对文件进行读、写、添加、删除等操作。 9.1.1 CFile类常用成员函数 见书上表9-1 9.1.2 文件的打开和创建 无论是新建还是打开文件,在MFC看来,实质上都是要创建一个文件对象(CFile类的对象) 为不同的应用目的, CFile类提供了几个不同的构造函数 下面给出一个常用的构造函数原型 CFile( LPCTSTR lpszFileName, //文件名称 UINT nOpenFlags // 文件打开方式 );throw(CFileException); //可抛出异常 参数nOpenFlags用来确定文件创建或打开方式,几种常用的nOpenFlags取值如下表 例9-1 缩写一个单文档界面程序,当用户用鼠标左键单击程序窗口用户区时,能在当前目录下以只写方式创建一个名称为”test.txt”的文件 显然,只要在视图类的鼠标左键按下消息响应函数中添加代码即可 void CMFCexp9_1View::OnLButtonDown(UINT nFlags, CPoint point) { char* pFileName = test.txt; TRY { CFile file( pFileName, CFile::modeCreate | CFile::modeWrite ); } CATCH( CFileException, e ) { //这里是异常处理的代码,暂且略 } END_CATCH } 9.1.3 文件的读写 1. 文件读写的定位 进行文件的读写操作需要指定对文件的操作位置,为此CFile类提供了成员函数seek,该函数用来对操作位置进行定位,其原型为: LONG Seek( LONG loff, //指针移动的字节数 UINT nForm //指针移动的起始位置 );throw(CFileException); nForm的取值 还有两个与文件指针相关的CFile成员函数: void SeekToBegin(); //使指针移动到文件的起始处 DWORD SeekToEnd(); //返回文件长度(字节数) 2. 文件的写操作 常用于写文件的CFile成员函数为: void Write( const void *lpBuf, //用户提供的数据缓冲区指针 UINT nCount //写入文件的字节数 ); 例9-2 编写一个单文档界面程序,当用户用鼠标单击程序窗口用户区时在当前目录下以只写方式创建一个文件名为”myfile.txt”的文件,并向其写入字符:”Hello! This is a file.” 显然代码需关注的是消息响应函数中的代码 void CMFCexp9_2View::OnLButtonDown(UINT nFlags, CPoint point) { char* pFileName = MyFile.txt; CFile file( pFileName, CFile::modeCreate | CFile::modeWrite); file.SeekToBegin( ); //置指针到文件头 char Data[ ] = Hello! This is a file.; file.Write(Data,sizeof(Data)); //写入文件 file.Flush( ); file.Close( ); CView::OnLButtonDown(nFlags, point); } 3. 文件的读操作 常用于读文件的CFile成员函数为: UINT Read( void *lpBuf, //读缓冲区指针 UINT nCount //读取的字节数 ); 函数调用成功后,其返回值为读取到缓冲区的字节数 例9-3 编写一个单文档界面程序,当用户用鼠标单击程序窗口用户区时,在当前目录下,可以以只读方式打开一个名称为”MyBmp.bmp”的位图文件,试用CFile类的成员函数读取位图的相关信息 void CMFCexp9_3View:: OnLButtonDown(UINT nFlags, CPoint point) { CFile
文档评论(0)