9.3对象的序列化.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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的派

文档评论(0)

teda + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档