文档介绍:本章要求:
掌握C语言中文件的概念
掌握打开文件的不同模式
掌握使用各种操作函数对文件进行读写的方法
能编写与文件有关的程序
本章难点:
掌握文件的各种操作函数,能对文件进行读写数据操作。
本章重点:
掌握文件的各种操作函数,能对文件进行读写数据操作。
第9章文件操作
第9章文件操作
为了长期保存数据,方便修改和供其它程序调用,就必须将其以文件的形式存储到外部存储介质(如磁盘)中。
C语言中的文件是对存储在外部介质上的数据集合的一种抽象,它提供了对文件进行打开、读写操作的相关函数,可以简单、高效、安全地访问文件中的数据。
文件系统的概念
C文件概述
文件是存储在外部介质上数据的集合,是操作系统数据管理的单位
使用数据文件的目的
数据文件的改动不引起程序的改动——程序与数据分离
不同程序可以访问同一数据文件中的数据——数据共享
能长期保存程序运行的中间数据或结果数据
C语言把文件看作一个字节序列,即由一连串的字节组成,称为“流”,其中每一个字节都可以单独的读取,每一个文件或者以文件结束标志结束,或者在特定的字节号处结束。
文件系统的概念
按文件的逻辑结构:
记录文件--由具有一定结构的记录组成(定长/不定长)
流式文件--由一个个字符(字节)数据顺序组成
从用户角度来看:
普通文件--存储介质文件(磁盘、磁带等)
设备文件--非存储介质(键盘、显示器、打印机等)
按数据的编码形式:
文本文件--ASCII文件,每个字节存放一个字符的ASCII码
二进制文件--数据按其在内存中的存储形式原样存放
文件分类
文件系统的概念
(1)文本文件
文本文件也称为ASCII文件,这种文件在磁盘中存放时每个字节对应一个字符,用于存放对应字符的ASCII码,文本文件输入输出时对字符进行逐个处理。
文本文件由文本行组成,每行中可以有0个或多个字符,并以行终止符‘\n’结尾,文件结尾是文件结束标志,该标志后再没有字符出现了。
(2)二进制文件
二进制文件是按二进制的编码方式来存放数据的,数据存放在磁盘上的形式和其在内存中的存储形式相同。二进制文件中的一个字节并不对应一个字符,虽然也可在屏幕上显示,但其内容无法读懂。
如 int型数10000
00100**********
内存存储形式
00100**********
二进制形式
0011000100110000001100000011000000110000
ASCII形式
文本文件特点:
存储量大、速度慢、便于对字符操作
二进制文件特点:
存储量小、速度快、便于存放中间结果
文件系统的概念
文件系统的概念
除了可以选择文件的不同组织形式,还可以在两个I/O级别(两种处理文件存取的级别)中进行选择。这两种文件系统分别为非缓冲文件系统(系统I/O)和缓冲文件系统(标准I/O)。
系统级的I/O使用操作系统提供的基本输入输出服务,操作系统不开辟读写缓冲区,通过操作系统的功能对文件进行读写。它不设文件结构体指针,只能读写二进制文件,但效率高、速度快。非缓冲文件系统依赖于操作系统,不是所有的操作系统都可以使用相同的系统I/O模型。ANSI C标准不再采用非缓冲文件系统,因此,本章不介绍非缓冲文件系统中文件的操作。
非缓冲文件系统
文件系统的概念
缓冲文件系统
标准I/,它相对于系统级I/O优势在于:第一,它包含了很多专用的函数,可以方便地进行I/O操作。第二,对输入输出进行了缓冲(因此称为缓冲文件系统),可以大块地转移信息,而不再是一个个字节进行操作。
缓冲区是在内存中开辟的一个区域,为程序中的文件使用。
文件系统的概念
如图所示,当执行读文件操作时,从磁盘文件中将数据先读入内存缓冲区,装满后再从内存缓冲区依次读入到接收的变量。执行写文件操作时,先将数据写入内存缓冲区,待内存缓冲区装满后再写入文件。由此可以看出,内存缓冲区的大小,影响着操作外存的次数,内存缓冲区越大,则操作外存的次数就少,执行速度就快、效率高。文件缓冲区的大小一般随计算机系统情况而定,缓冲过程是在后台进行的,本章将详细介绍缓冲文件系统中文件的操作。
缓冲文件系统
缓冲文件系统的特点是:
在内存开辟一个“缓冲区”,为程序中的每一个文件使用。当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依次读入到接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操