- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.3对象的序列化
9.3 对象的序列化 5. Serialize函数的局限性 只能顺序读写文件,不能随机操作文件; 只能一次性读写文件的所有部分,不能部分读取文件的内容; 只能操作二进制文件,不能处理文本文件; 不能操作数据库文件; 不能共享式操作文件。 * * 第9章 MFC的文件处理机制 9.1 CFile类 9.2 CArchive类 9.3 对象的序列化 9.4 宏DECALRE_SERIAL和IMPLEMENT_SERIAL 9.5 MFC文件命令的默认处理流程 MFC的文件处理机制主要有两种: 通过CFile类实现文件的读写; 通过对象的序列化(Serialization)实现数据的存储和读写 FILE structure Stores information about current state of stream; used in all stream I/O operations 序列化的基本思想:一个类应该能够对自己的成员变量的数据进行读写操作,对象可以通过读操作而重新创建。由于CObject类提供了保存和加载对象状态的基本功能,所以一般类的对象都具备将状态值写入磁盘或从磁盘中读出的方法,这种对象的保存和恢复的过程称为序列化。 内存 磁盘 对象成员(派生自CObject) 文件 内存地址 9.1 CFile类 CFile类中包含了大量的文件操作函数, 1)用户可以使用CFile类实现文件的read、write、append、delete等操作。 2)相对于其他的文件操作方式,CFile更显得直接和自由。 3) 与C/C++中的文件操作方式接近 1. CFile类常用的成员函数(表9-1) 2. 文件的创建和打开 创建CFile类的对象,并使其与磁盘文件之间建立关系。 CFile的构造函数: CFile::CFile() CFile::CFile(int hFile); CFile::CFile(LPCTSTR lpszFileName, UINT nOpenFlags ); 文件名(字符串常量) 文件打开模式 9.1 CFile类 9.1 CFile类 打开方式 说明 CFile::modeCreate 如果文件已经存在,则长度置0 CFile::modeNoTruncate 与modeCreate组合使用,如果文件已存在,则其长度不为0 CFile::modeRead 只读方式打开 CFile::modeReadWrite 读写方式 CFile::modeWrite 只写方式 CFile::ShareExclusive 独占方式打开 表9-2 几种常用的文件创建及打开方式 例 9-1 长度=0 长度!=0 9.1 CFile类 3. 文件的读写 读写位置的定位: LONG CFile::Seek(LONG lOff, UINT nFrom); 偏移字节数 偏移起点位置 nFrom的取值 说明 CFile::begin 文件首 CFile::current 当前位置 CFile::end 文件尾 表 9-3 nFrom的取值 void CFile::SeekToBegin() void CFile::SeekToEnd() 9.1 CFile类 文件的写操作 void CFile::Write(const void * lpBuf, UINT nCount); 待写数据的缓冲区 待写数据的字节数 例 9-2 9.1 CFile类 文件的读操作 UINT CFile::Read(void * lpBuf, UINT nCount); 读缓冲区指针 读取的字节数 例 9-3 9.1 CFile类 4. CFile的派生类CMemFile 将一块内存区域当作文件来实现读写操作,便于在程序的独立模块之间交换数据。 9.1 CFile类 5. CFileFind类——查找文件 例 9-7 9.1 CFile类 文件属性的访问 9.2 CArchive类 为什么引入CArchive类? 为了在磁盘文件中保存应用程序类对象,并通过读取在内存中复原它们。 如何实现类对象的存储和读写? -类的序列化(Serialization)机制,自动化的存储机制,保存对象,动态恢复对象。 - 形如:ar a b … z; ar a b … z; 为什么不使用CFile类来实现? -类的成员比较复杂(访问属性,继承,嵌套其他的类对象),因此存储也变得复杂。 - 复原这些对象(动态地创建对象)也需要一些机制来实现。 File App Write Read 9.2 CArchive类 9.2 CArchive类 1. 运算符重载 为了便于文件的读写操作,CArhive重载了两个运算符,对基本数据类型和CObject的派
您可能关注的文档
- 101年第3届传统文化与现代文化创意产业学术研讨会.doc
- 1.微乳液的定义、结构与特征及其制法2.微乳液相色谱的特点、分离.ppt
- 1.3物流企业经营与管理-崇阳物流网.ppt
- 1.地图与地理资讯.ppt
- 102年环境教育基金公开徵求案申请补(捐)助辅导说明会(第一场台中场).doc
- 104年度脚底按摩从业人员职能基准发展与运用说明会补助单位卫生.doc
- 1030829教育训练组(ppt)-营造业中区劳工安全卫生促进会LSHPC.ppt
- 103年-100年度绩优人员专刊.ppt
- 103年01月17日(五)复兴国中教师会,期末会员大会-复兴国中首页.ppt
- 105年防疫奖励实施办法-卫生福利部疾病管制署.doc
- 全国青少年(毒品预防教育)知识考试题库与答案 .pdf
- 2023年山东胶州市领军计划自主招生历史试题真题(含答案详解) .pdf
- 【人教版八年级生物】第六单元 第二章 认识生物的多样性 .pdf
- 冀人版-第三单元 电(提升卷)-四年级科学上册单元培优进阶练.docx
- 新郑市事业单位统考真题 .pdf
- 冀人版-第三单元动物的生长与繁殖(单元测试)四年级下册科学.docx
- CLCN4基因变异相关癫痫的临床表型及基因变异特点 .pdf
- 【《“双减”背景下小学中年级语文自主阅读策略探究》6500字】 .pdf
- 高一语文开学第一课+课件+2024-2025学年统编版高中语文必修上册 .pdf
- 密山市事业单位统考真题 .pdf
文档评论(0)