📄 untitled-01.txt
字号:
第 6 $文件 1/ 0和串行化
文件输人和输出(1/0)服务是所有操作系统的主要工作。不必惊奇,mcros」悄ndows
提供了各种API函数用来读、写和操作磁盘文件。MFC将这些函数和CFile类融合在面向对
象的模型里。其中CFile类允许把文件当作对象,并用 CFIIe成员函数,如 Read和Write,对
它们进行操作。CFile具有MFC编程人员实现低级文件1/0所需要的所有工具。
编写文件1/0代码最主要的原因是为了支持文档的存储和加载。尽管用CFile对象实
现磁盘文档的读写并没有错,但是大部分MFC应用程序不会这么做,而是用CArchive对象。
通过MFC实现巧妙的运算符重载,大部分数据都可以串行化为CArchive,即作为一个字节流
输出,或从一个CArchive并行化为初始状态。这在句法实现上也非常简单。另一方面,如果
CA。hive对象挂接在CFile对象上,被串行化为该CA。hive的数据就以透明方式写到磁盘
上。此后,您还可以把与此文件有关的Carchive并行化,最终重建以这种方式存档的数据。
通过将文档串行化或CArchive并行化可以实现文档的存贮和加载。这是MFC文档/视
图体系结构的基础构件之一。尽管目前对CArchive的了解还只限于有限的几种用法,但是
可以确信:在第9章我们开始编写文档/视图应用程序时,Carchive的其他方法会使它更加
容易操作。
6.ICFile类
CFile是比较简单的类,它封装了 Win32 API用来处理文件1/0的那部分。在多于25个
的成员函数中有用来打开和关闭文件的函数,读和写文件数据的函数,删除和重命名文件的
函数,还有检索文件信息的函数。它的公用数据成员之一,。hFile,保存着与CFile对象相
关联的文件的句柄。一个受保护的 CString数据成员,名为 in- strFileName,保存着文件的名
称。成员函数GetFilePath、GetFileName和GetFileTitle可以用来提取整个文件名或文件名的
一部分。例如:如果完整的文件名和路径名为C:\Personal\File.txt,GetFIlePath返回整个字
符串,GetFileName返回“File‘txt”,而GetFileTitle返回“FIIe.”。
但是如果细讲这些函数,就等于忽略了对编程人员来说CFile拥有的重要功能,即用来
读写磁盘文件的函数。下面几部分简要地介绍了CFIIe的使用方法,以及错误发生时CFile
的奇特通知方式。(提示:如果您从没有用过 C+十异常处理,现在该是改进手工编程方式的
时候了。)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -