在面向对象的程序设计中,一般都是用二进制文件来保存文档资料.在VC++中控制和使用文件流的方法很多,MFC程序设计中常用的有两种方法:用CFile对象存储和读取文件:利用串行化存取文件.其中用CFile对象直接存储文档,存在着以下两个问题:一是过程繁琐,例如绘图系统中常存在大量的数据对象(直线对象.矩形对象等):另一个问题是功能受限,VC++为了程序集成的需要,设汁成了复合文档,可以把各种外来对象(如OLE对象的嵌入和链接)的内容存储到外部文件中并从外部文件中读取内容更新构造对象,而程序的设计者…
一.MFC允许对象在程序运行的整个过程中持久化的串行化机制 (1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程. (2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态. (3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议. (4)串行化的基本思想: a.对象必须能将其当前状态写入到持久化存储媒介中,通常用其成员变量实现. b.对象可以通过读或反序列化从存储媒介中重新构造对象的状态. c.串行化…
一.MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程.(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态.(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议.(4)串行化的基本思想:          a.对象必须能将其当前状态写入到持久化存储媒介中,通常用其成员变量实现.          b.对象可以通过读或反序列化从存储媒介中重新…
为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction  isolation model).当所有事务都采取串行化的模式执行时,我们可以认为同一时间只有 一个事务在运行(串行的),而非并发的 以串行化模式对事务进行隔离的效果很好,但在此种模式下应用程序的效率将 大大降低.将并行执行的事务完全隔离意味着即便当前只存在一个对表进行查 询(query)的事务,其他事务 也不能再对此表进行插入(inse…
Lesson 13 文档与串行化 13.1使用CArchive类对文件进行读写操作 //让对象数据持久性的过程称之为串行化,或者序列化 void CGraphicView::OnFileWrite() { // TODO: Add your command handler code here CFile file("1.txt",CFile::modeCreate|CFile::modeWrite);    //build CFile object CArchive ar(&f…
一. MFC中CFile对象实现了磁盘文档的读写,但是大部分MFC应用程序的IO服务都使用CArchive对象来完成.不管CFile和Archive输入输出的都是二进制数据,非文本数据. int a = 0; CFile file(TEXT("log.txt"), CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate); file.Write(&a, sizeof(a)); CArchive ar(&a…
永久保存(串行化)是MFC的重要内容,可以用一句简明直白的话来形容其重要性:弄懂它以后,你就越来越像个程序员了! 如果我们的程序不需要永久保存,那几乎可以肯定是一个小玩儿.那怕我们的记事本.画图等小程序,也需要保存才有真正的意义. 对于MFC的很多地方我不甚满意,总觉得它喜欢拿一组低能而神秘的宏来故弄玄虚,但对于它的连续存储(serialize)机制,却是我十分钟爱的地方.在此,可让大家感受到面向对象的幸福. MFC的连续存储(serialize)机制俗称串行化.“在你的程序中尽管有着各种各样的…
文件输入和输出(I/O)服务是所有操作系统的主要工作.Microsoft Windows提供了各种API函数用来读.写和操作磁盘文件.MFC将这些桉树和CFile类融合在面对对象的模型里.其中CFile类允许把文件当做对象,并用CFile成员函数,如Read和Write,对它们进行操作.CFile具有MFC编程人员实现第几文件I/O所需要的所有工具. 尽管用CFile对象实现磁盘文档的读写并没有错,但大部分MFC应用程序不会这么做,而是用CArchive对象.通过MFC实现巧妙的运算符重载,大部…
1.枚举所有文件夹(递归) void EnumerateFolders () { WIN32_FIND_DATA fd; HANDLE hFind = ::FindFirstFile (_T ("*.*"), &fd); if (hFind != INVALID_HANDLE_VALUE) { do { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { CString name = fd.cFileName; i…
QDataStream类提供了二进制数据到QIODevice的串行化. #include 所 有成员函数的列表. 公有成员 QDataStream () QDataStream ( QIODevice * d ) QDataStream ( QByteArray a, int mode ) virtual ~QDataStream () QIODevice * device () const void setDevice ( QIODevice * d ) void unsetDevice ()…