第十三章 保存和读取文件
使用文件保存和读取数据是经常需要的操作,VC++有一个CFile类来管理和使用文件。另外,还有一个类CArchive,中文翻译为系列化保存和读取文件或串行化,它用于储存一系列用序的数据。本书把它称为“系列化”吧,本章通过一个实例演示保存和读取文件的最基本的方法。
本章要点
1 CFile类和打开文件的
2 使用系列化存取文件类CArchive
13.1 CFile类和CArchive类
CFile类属于MFC的基本类,它是管理和使用文件的类,功能非常强大。我们将在后续的教程中专门讨论,本章只学习打开和关闭文件的方法。
第一行声明一个文件对象f,第二行是打开文件。该函数有两个参数,参数1是字符串类型,指定要打开的文件路径名。参数2表示打开方式,它必须是CFile的数据成员。例如:
语句指明打开模式为新建,如果文件已经存在,则以“写模式”打开,即新内容将从头写起,覆盖旧的内容。而文件名则是当前目录中的mytest.txt。这样打开的文件是不能读 的,如果要读,旧要用“读模式”去打开,:如
这两个函数都有一个bool返回值,如果操作成功就返回真TURE,FALSE就表示打开失败。
要储存文件可建立一个系列化对象,如:
用CArchive类的构造函数创建了ar对象,这需要帝国两个参数,一个可以存取的CFile对象,&f就是该文件对象的地址;另一个是CArchive类的数据,指定是用存模式store还是取模式load。第二个语句中的“<<”是输出操作符,它将变量的值输出到ar中。所以上面的两句功能是声明对象ar为存模式,把变量m_var1和m_var2依次写入文件f中。
如果要从文件中读取数据,就可用如下代码:
13.2 ArchiveFile.exe程序的界面和功能
现在我们来创建一个ArchiveFile程序,在对话框中输入姓名和年龄,年龄是整数类型。按SAVE按纽数据就保存在指定的一个文件中。如果储存过的话,按OPEN按纽就可以读入并显示在编辑框中。
图chap13-01
13.3 设计对话框的界面
按下图和属性表设计主窗口的界面:
控件 | 标题 | ID | 属性 |
编辑框 | - | IDC_VAR1_EDIT | |
编辑框 | - | IDC_VAR2_EDIT | Styles = Number |
按纽 | SAVE | IDC_SAVE_BUTTON | |
按纽 | OPEN | IDC_OPEN_BUTTON | |
按纽 | EXIT | IDC_EXIT_BUTTON |
13.4 编写代码
先给两个编辑框定义两个变量CString m_var1和int m_var2。剩下的就只要给三个按纽下代码。双击SAVE按纽,键入下列代码:
void CArchiveFileDlg::OnSaveButton()
{
}
双击Open按纽,键入下列代码:
void CArchiveFileDlg::OnOpenButton()
{
}
文件使用完毕后要用Close()关闭它。双击EXIT按纽,键入OK代码。就可以编译和运行了。
思考和实践
1 把本程序扩展成一个可记录员工信息登记表的程序。
2 在两输入框这都输入数字,保存后有记事本打开文件,看看记录有何差异。
3 如何使它变成一个可储存多行纯文本的程序?