版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 文件操作,在之前章节的例子中,我们编写的程序信息存储在内存中。当程序运行结束之后,数据就会从内存中清除。再次运行程序,之前的数据就不复存在了。在Windows程序中,不仅需要保存用户的文档数据,而且还需要保存用户对程序的偏好设置。所以在写Windows程序时文件操作是必不可少的内容。,10.1 C和C+函数实现文件操作,MFC非常强大的一点,就是可以在程序中直接调用C或C+函数来实现底层操作。这样就可以很方便的实现和底层硬件进行通信。这也是为什么MFC程序可以很方便应用在工业控制以及嵌入式通信的原因。这一节我们编写一个对话框程序,通过调用C和C+函数来实现文件的操作。,10.1.1
2、C函数实现文件操作,在C语言中,对于文件的操作是利用FILE结构体进行的。我们将在例子中用得的一些函数,如下表所示。,10.1.2 C+文件流实现文件操作,在C+中,有一个stream类,所有的I/O都是以这个“流”类为基础。stream类有两个重要的运算符,插入器()。对文件的操作是通过stream的子类fstream来实现的。要用这种方式操作文件,就必须加入头文件fstream。,10.2 Win32 API实现文件操作,Win32 API提供了与文件操作相关的函数。这些函数要比C和C+自带的函数功能更强大。这一节,我们将利用CreateFile()、ReadFile()和WriteFil
3、e()函数来实现文件的创建、写入和读取。,10.2.1 文件的创建、写入和读取,在使用Win32 API函数操作文件之前,我们首先需要认识一下这三个函数。下面,我们对这三个函数的原型声明和具体的参数做简要的讲解。,10.2.1 文件的创建、写入和读取,1.文件创建函数CreateFile() 利用Win32 API的CreateFile()函数可以创建和打开一个文件对象。但是该函数的功能不仅仅只有创建文件那么简单,而且还可以创建通信资源、管道、控制台等对象。通过查阅MSDN得知该函数的原型如下。,10.2.1 文件的创建、写入和读取,2.文件写入函数WriteFile() WriteFile(
4、)函数是Win32 API提供的一个向文件中写入数据的函数。并且它可以指定是以同步方式写入还是以异步方式写入。该函数的原型及参数说明如下。,10.2.1 文件的创建、写入和读取,3.文件读取函数ReadFile() ReadFile()函数是Win32 API提供的一个从文件读取数据的函数,该函数的原型及参数说明如下代码所示。,10.2.2 利用Win32 API函数实现文件操作,同样我们将直接利用上一节中的已创建好的Test对话框程序。只需在其“保存”和“读取”按钮消息响应函数修改相应的代码,利用Win32 API函数实现上一节中相同的功能即可。,10.3 MFC类实现文件操作,本节将利用M
5、FC提供的CFile类来实现对象的存储和读取操作,并且将利用系统对话框CFileDialog类,为程序添加“另存为”和“打开”对话框,实现动态文件的存储和读取。,10.3.1 CFile类,MFC提供了CFile类可对文件实现打开、关闭、读写、定位、删除等操作,也是文件操作类的基类。该类没有缓存二进制格式的磁盘文件输入输出功能,通过其派生类能够间接地支持文本文件和内存文件。该类有三种形式的构造函数,本节将用到的声明形式如下所示。,10.3.2 利用CFile类实现文件操作,下面我们来编写一个对话框程序,利用CFile类提供的方法来实现对数据的保存和读取操作。例子很简单,只需要实现对三个属性变量
6、进行存档即可。,10.3.3 CFile例子改进,在上面例子中可以发现,保存和读取按钮都只能读取固定路径和名字的文件。而在几乎所有的Windows程序中都不是这样的,程序可以根据用户所提供的路径和文件名来实现数据的保存。所有这一小节我们将通过改进上面的例子实现这样的功能。,10.4 Win.ini文件访问,有时候,在程序第一次运行时,需要将一些初始化信息写入一个配置文件中,当程序启动时从这个配置文件中可以读取到初始化信息。在早期初始化信息是写在Win.ini中,该文件在Windows目录中。现在大部分软件的初始化信息都写入注册表中。,10.4.1 对Win.ini文件操作,Win.ini文件可
7、以在Windows目录中找到,下图是笔者机器上的Win.ini文件截图。,10.4.2 Win.ini操作例子,这一小节利用上面介绍的两个函数来对Win.ini进行写入和读取操作。这个例子很简单,只是完成了在Win.ini文件中读取和写入字符串。,10.4.3 CWinApp中的ProfileString函数,前面也提到了,CWinApp中也有WriteProfileString()和GetProfileString()函数,而且和Win32 API中那两个函数名称完全相同。那它们有什么区别呢?CWinApp类中的WriteProfileString()函数原型声明如下所示。,10.4.3 CWinApp中的ProfileString函数,CWinApp类中的GetProfileString()函数原型声明如下所示。,10.5 小结,本章主要讲解了通过C和C+函数、Win32 API函数、CFile类来实现数据的保存和读取操作,还讲解了利用Win32
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州黔南州荔波县人力资源和社会保障局招聘城镇公益性岗位人员6人考试备考题库及答案解析
- 2026北京市东昌私募基金管理有限公司招聘3人笔试参考题库及答案解析
- 2026云南红河州个旧市医疗卫生共同体乍甸分院编外工作人员招聘1人考试备考题库及答案解析
- 2026重庆飞驶特人力资源管理有限公司大足分公司外派至重庆市大足区人力资源开发服务中心招聘公益性岗位人员1人考试参考题库及答案解析
- 2026年河北衡水安平县人民医院公开招聘工作人员7名考试参考试题及答案解析
- 2026广东佛山市第二人民医院服务中心招聘24人考试参考题库及答案解析
- 2026年低空经济(eVTOL)载人项目营销方案
- 2026年协作机器人柔性生产项目评估报告
- 2026合众人寿保险股份有限公司绍兴中心支公司嵊州营服招聘综合内勤1人(浙江)考试参考题库及答案解析
- 2026广西来宾市鑫牧源商贸有限公司招聘5人考试参考试题及答案解析
- 2026黑龙江哈尔滨新区产业投资集团有限公司市场化招聘3人笔试模拟试题及答案解析
- 隐睾症的健康教育
- 2026年广东省湛江市高三一模高考数学试卷试题(答案详解)
- 水利工程地质勘察规范(标准版)
- 2026年农业科技行业智能灌溉系统报告及未来农业创新发展趋势报告
- 2026年江西现代职业技术学院单招职业技能考试题库含答案详解
- 儿科雾化治疗的护理沟通技巧
- 译林版英语六年级上册单词默写本(正乱序英汉互译)含答案
- 购物商城管理系统
- HPV与宫颈病变关系课件
- 中国中煤能源集团有限公司图克绿色低碳产业示范园区规划-高质量打造鄂尔多斯世界级现代煤化工产业示范区关键核心区
评论
0/150
提交评论