• 1. 第15章 文 件 杨章伟 e-mail:yang505412@163.com
  • 2. 课程内容安排文件和流 文件的打开与关闭 文件的顺序读写 文件的随机读写 小结 习题
  • 3. 文件概述 文件是一系列字符数据的有序集合,按组织形式可分为文本文件和二进制文件两种。 文件是信息的集合,通常是指记录在外部存储介质(如磁盘等)上的信息集合。例如用Word或Excel编辑制作的文档或表格就是一个文件,将其存放在磁盘上就是一个磁盘文件,输出到打印机上就是一个打印机文件。文件通常存放在磁盘上,通过“路径”指明其在磁盘上的位置。“路径”是由目录和文件名组成的。
  • 4. 文件流类 前面提到了,在C++中有一个stream类,所有的输入/输出(I/O)都是以这个“流”类为基础的,类stream有两个重要的运算符。 流输出运算符(<<):向流输出数据。比如说,系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,语句cout<<"Write Stdout"<>):从流中输入数据。比如说,系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,语句cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
  • 5. 文件流类C++中提供了三个文件流类的功能如下。 ofstream:输出流类,用于向文件中写入内容。 ifstream:输入流类,用于从文件中读出内容。 fstream:输入/输出流类,用于既要读又要写的文件的操作。
  • 6. 文件的打开与关闭 C++中,要进行文件的输入/输出,必须先创建一个流,再把这个流与文件相关联(即打开文件),才能进行输入/输出操作,完成后要关闭文件。前面提到了C++中的三个输入/输出流类ofstream、ifstream和fstream,它们同属于ios类,可访问在ios类中定义的所有操作。与此相对应,为了执行文件的输入/输出操作,C++还提供了三个输入/输出流,即输入流、输出流和输入/输出流。建立流就是定义流类的对象,例如: ofstream out; ifstream in; fstream inout; 建立了流以后,就可以把某一个流与文件建立联系,从而进行文件的读写操作了。
  • 7. 读写文本文件 对文本文件进行读写时,先要以某种方式打开文件,然后使用运算符“<<”和“>>”进行操作就行了,只是必须将运算符“<<”和“>>”前的cin和cout用与文件相关联的流代替。例如,cin可以用fin流代替,cout可以用fout代替等。 【范例15-4】文本文件的文件读写。该范例首先向文本文件test.txt中写入三行字符,再将该文件打开,并将写入的字符串依次输出到屏幕上 。
  • 8. 读写二进制文件 前面提到了,二进制文件是一种不能用普通的字处理软件进行编辑、占空间较小的文件。 任何文件,都能以文本方式或二进制方式打开。对以二进制方式打开的文件,由两种方式进行读写操作:一种是使用函数get()和put(),另一种是使用函数read()和write()。 【范例15-6】用函数get()和put()读写二进制文件。该范例定义一个命令,在DOS下调用该命令可实现将文件1的内容拷贝到文件2中,相当于DOS命令中的copy命令
  • 9. 文件的随机读写 随机读写是通过使用输入或输出流中与随机移动文件指针相关的成员函数,通过随意移动文件指针而达到随机访问。 移动文件指针的成员函数主要有seekg()和seekp(),它们的常用原型为: isream &seekg(streamoff offset,seek_dir origin); osream &seekp(streamoff offset,seek_dir origin); 其中,参数origin表示文件指针的起始位置,offset表示相对于这个起始位置的位移量。seek_dir是系统定义的枚举名,origin是枚举变量。 【范例15-8】文件的随机读写。该范例实现文件的随机读写,将文件中的字符串输出,
  • 10. 本章主要介绍了C++中文件的概念及其相关的操作。文件和流是C++中输入/输出中的重要组成部分,第14章内容也介绍过了输入/输出流类库,本章重点讲解了文件流的操作。对于任意一个文件进行操作前,都必须打开文件,再进行文件的读写操作。本章通过实例详细介绍了文本文件、二进制文件和随机文件的读写操作,在对文件进行操作后,都必须将文件关闭。小结
  • 11. 1.编写一个C++程序,将指定的一个文件内容读出,要求加入判断该文件是否打开成功的代码。 【解答】该试题主要考查文件的读操作。根据前面学习的内容,读者知道读出一个文件的内容首先必须先以某种方式将指定文件打开,并通过判断打开函数的返回值判断文件是否打开成功,如果打开成功则可以通过read函数进行读出。 2.编写一个C++程序,实现文件复制的功能。 【解答】该试题主要考查二进制文件的读写操作。对于一个文件的读写操作而言,首先需要先打开指定文件,任何打开目标文件,通过循环语句,从指定的源文件中分块读出数据信息,写入到目标文件中,一直到源文件读写完成为止,完成后将源文件和目标文件都关闭。 习题
  • 12. 习题3.写出下面函数实现的功能。 #include #include void JC(char *fname,int n) { ofstream fout(fname,ios::out | ios::binary); int x; for (int I=0;I>x; fout.write((char *)&x,sizeof(x)); } fcout.close(); }