- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC中文件操作、查找与选择总结解析
MFC总结(一):MFC中文件操作、查找与选择总结(1)
?本文主要涉及以下几个方面,均为在MFC编程中较为常用的:CFile操作、CArchive操作、如何选择文件和文件夹、如何查找文件、获取当前目录、_access函数等。
???? (一)使用CFile类操作文件
?????? CFile类在MFC的文件操作中应该是最常用的了。主要的成员函数有Open、Close、Write、Read、Seek、SeekToEnd、GetLength、GetPosition,具体用法见MSDN。
?????? (1)文件打开操作:
??? ? ? 文件打开有两种方式,一种是先定义类对象,在用Open函数打开;一种是在定义类对象时传入文件名和打开方式。分别如下
??????? CFile file;
?? ? ?? if(!file.Open(lpszFileName,?nOpenFlags?))
???????? ???? return;
?? ? ? 或
?? ? ? CFile file(lpszFileName,?nOpenFlags);
????? (2)文件打开方式:
?????? 文件打开方式,即上述nOpenFlags的值主要由一些宏定义的值组合而成,具体见MSDN,常用的有如下几种:
?????? A.?CFile::modeCreate?|??CFile::modeNoTruncate?|CFile::modeWrite?,以写文件的方式打开,如果文件不存在,则新建文件,否则打开已有文件进行写入操作,此时不会清空原有文件;
?????? B. 将上述CFile::modeWrite更换为CFile::modeRead?或者CFile::modeReadWrite?可实现读操作或者同时读写。
??? (3)判断文件结束
? ?? 判断文件是否结束,没有结束则继续读取,否则关闭退出。这点在编程时常用。对于CFile常用的判断文件结束的方法是:
? ? while(file.GetPosition() file.GetLength())
??? {?? //文件未结束
??? ? ? ?? //Add code ....
??? }
??? (4)值得注意的几点:
???? A. 当文件名中包含路径时,要注意使用\\,如C:\\MyFile.DAT,在Unicode下时,需要使用_T(C:\\MyFile.DAT);
???? B. 采用(2)中A方式写文件时,注意使用file.SeekToEnd()将文件指针移至文件尾,再写入,否则会覆盖已有的数据,这点经常被很多初学者忽视;
???? C. 在打开文件后就要紧接着写下Close,养成这样的习惯,避免忘记关闭文件。特别是在对某个读出的数据进行判断,如何符合条件则函数返回,此时一定要切记返回前关闭文件;
???? D. CFile读写文件都是按照字节来实现的。
??????? 未完,待续。。。。?
(二)CArchive类操作
?? ? CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 在文档视图编程,结合CList和CArray等可很方便的实现数据读写。
???? (1)基本数据读写----显示创建CArchive对象
???? A.? 使用CArhive类之前,必须要有一个CFile文件对象,同时必须保证CArchive的操作必须是在CFile处于打开状态,且操作期间文件状态不会发生变化。
???? B. 然后定义CArchive对象,将其与CFile对象关联,并指定其模式是用于缓冲区读还是写:
????? CArchive ar (pFile, ? ? ? ? ? ? //目标文件,CFile对象指针
??????????????????????????????nMode,??????? //操作方式, 读/写
??????????????????????????????nBufSize,??? //指定缓冲区大小,默认为4096
??????????????????????????? ??lpBuf?????????? //缓冲指针,默认为NULL,即从本地堆中取出一块内存空间,操作结束后自动释放
??????????????????????????? );
????? C.对于基本数据类型,可直接使用operator 和operator 进行数据读出和写入。这些数据类型BYTE、WORD、LONG、DWORD、float、double、int、short、char、unsigned u等。 对于CString对象也可使用。
?????? 对于自定义的结构体数据类型,我们自己可以重载这两个运算符,一个示例如下。
[cpp]?view plai
您可能关注的文档
- M2U2MyEnglishlesson解析.ppt
- MapReduce超大机群上的简单数据处理解析.doc
- MA5626E(MA5620E)产品描述-(V800R305_01)解析.doc
- MargaretDrabbleWorks解析.ppt
- M5U5period1wordstudy解析.ppt
- MAF型棉花加工安全防护系统解析.ppt
- ManufacturingExecutionSystem解析.ppt
- Mastercam数控车编程教程(中文版)解析.ppt
- MARPOL73_78防污公约解析.ppt
- MATLAB)课后实验答案-精简版解析.doc
- Global_Decentralized_Payment_and_Clearing_Network_Construction_Plantruction_Plantruction_Plan参考资料说明.pdf
- Belt and Road Supply Chain Finance Blockchain Solution参考资料说明.pdf
- 附件6、征求意见稿_四甲基氢氧化铵五水合物.pdf
- 附件4.征求意见稿-基于干法工艺锂离子电池用铝塑复合膜.pdf
- 易错06 特殊四边形的性质与判定(七大易错分析+举一反三+易错题通关)(原卷版).pdf
- 易错06 特殊四边形的性质与判定(七大易错分析+举一反三+易错题通关)(解析版).pdf
- 竞选生活委员发言稿(合集15篇).doc
- 社区重阳节讲话稿.doc
- 订婚父母讲话稿.doc
- 纪律委员竞选的演讲稿(范文15篇).doc
文档评论(0)