MFC Windows 程序设计 第六章 文件I/O与串行化
来源:互联网 发布:海迅开料软件 编辑:程序博客网 时间:2024/06/06 11:04
第六章 文件I/O与串行化
1、CFile类,封装Win32 api用来读写文件的部分,使用时最好捕捉异常(CFileException,使用完后删除异常类),子类CMemFile、CShareFile、CSocketFile、CStdioFile(ReadString、WriteString)
属性:m_hFile、m_strFileName
函数:GetFilePath、GetFileName、GetFileTitle、Open、Close、Read、Write、GetPosition、Seek(第二个参数确定偏移值位置,begin、end、current)、SeekToBegin、SeeToEnd。
Rename、Remove
读写模式:modeReadWrite、modeRead、modewrite
共享模式:shareDenyNone(非独占方式打开) shareDenyWrite shareDenyRead shareExclusive(禁止读写,默认值)
异常类CFileException:ReportError,m_cause。
2、枚举文件夹和文件,WIN32_FIND_DATA结构中dwFileAttrbutes是否包含FILE_ATTRIBUTE_DIRECTORY可确定当前项是文件夹还是文件,cFileName和cAlternateFileName保存长的文件名和短的文件名
函数:::FindFirstFile(返回值是INVALID_HANDLE_VALUE以为的任何值,填充WIN32_FIND_DATA结构,返回值为文件句柄),::FindNextFile(返回值不为NULL),::SetCurrentDirectory。
3、串行化与并行化,应用程序使用CArchive对象实现读写工作,而CArchive对象转而利用CFile函数实现文件I/O,串行化是将持久性数据串行化为档案(<<),
并行化是将数据从档案中读出去,串行化是文档/视图结构的基础(>>),CArchive类是用来操作串行化的类,相当于档案,
可用 CArchive>>读出数据,使用CArchive<<保存数据,IsStoring()返回值为非零值,则数据串行化档案,出现异常:CMemoryException(内存不足)、CFileException(I/O错误)、CArchiveException(其他串行化错误)。
可串行化类:BYTE WORD DWORD LONG float double int unsigned int short char CString CTime CSize CPoint CRect
串行化类方法:
1、继承自CObject的派生类;2、类的说明中增加 DECLARE_SERIAL宏;3、重载基本类的Serialize函数,并串行化派生类的数据成员;4、如果派生类没有默认构造函数,则创建一个;
5、在类的实现中,写入MFC的IMPLEMENT_SERIAL宏,此宏接收模式号(版本号)参数
4、串行化类的向下兼容
1、将IMPLEMENT_SERIAL宏中的模式号与VERSIONABLE_SCHEMA(屏蔽CArchiveException异常)相与;2、修改类的Serialize函数,使用GetObjectSchema(只能调用一次)获取对象的模式号,根据模式号并行化对象。
5、CObject类的串行化,MFC为CObject指针重载了CArchive的插入和提前运算符,但没对CObject类进行重载,有以下两个方法可以对CObject进行值串行化。
1、CLine line(CPoint(0,0),CPoint(100,50)); ar << &line CLine* pLine ar >> pLine ; CLIne line = *pLine; delete pLine;
2、调用类的串行化函数:CLine line(CPoint(0,0),CPoint(100,50)); line.Serialize(ar); CLine line; line.Serialize(ar);该方法没有写入模式号,使用GetObjectSchema返回-1,无法实现多版本兼容。
- MFC Windows 程序设计 第六章 文件I/O与串行化
- 20160406 第6章 文件I/O和串行化(来自《MFC Windows 程序设计(第2版)》)
- MFC Windows程序设计学习笔记--文件和串行化
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 12.3 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 12.3 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- 串行通信与重叠I/O
- Windows程序设计__孙鑫C++Lesson13《文档与串行化》
- 文件与I/O
- MFC Windows 程序设计 第四章 菜单
- Myeclipse项目的调试与发布
- 进程调度
- MFC Windows 程序设计 第五 MFC集合类
- linux多线程的总结(pthread用法)
- MFC Windows 程序设计 第六章 文件I/O与串行化
- MFC Windows 程序设计 第七章 控件
- Effective C++读书笔记(四) 设计与声明
- 【parameter】oracle的隐含参数的查看
- Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
- 链表的创建与插入练习
- JAVA-设计模式之原型设计
- affine modle
- JDK1.6、1.7新特性介绍