文件(File)是被命名的相关信息的集合体。它通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。例如用户编写的一个源程序、经编译后生成的目标代码程序、初始数据和运行结果等,均可以文件形式保存。所以,文件表示的对象相当广泛。一般地,文件是由二进制代码、字节、行或记录组成的序列,它们由文件创建者或用户定义。
文件中的信息由创建者定义。很多不同类型的信息都可存放在文件中,如源程序、目标程序、可执行程序、数值数据、文本、工资单、图形图像、录音等。根据信息类型,文件具有一定的结构。如文本文件是一行一行(或页)的字符序列;源文件是子程序和函数序列,它们又有自己的构造,如数据说明和后面的执行语句;目标文件是组成模块的字节序列,系统链接程序知道这些模块的作用;而可执行文件是由一系列代码段组成的,装入程序可把它们装入内存,然后运行。
文件类型
为便于管理和控制文件,常把文件分成若干类型。由于不同系统对文件的管理方式不同,因而对文件的分类方法也有很大差异。下面是常用的几种文件分类方法。
- 按用途分类
- 文件中的数据形式分类
- 按存取权限分类
- 按保存时间分类
- 在UNIX/Linux和MS-DOS系统中,按文件的内部构造和处理方式分类
普通文件通常分为ASCII文件和二进制文件。ASCII文件由只包含ASCII字符的正文行组成,每个正文行以回车符或换行符终止,各行的长度可以不同。ASCII文件又称文本文件,常用来存储资料、程序源代码和文本数据。文本文件的最大特点是可以直接显示和打印,可用普通文本编辑器进行编辑加工。
二进制文件所包含的每个字节可能有256种值。因此,对于表达信息来说,二进制文件是一种更为有效的方式,但它不能在终端上直接显示出来。大家最熟悉的二进制文件恐怕就是可执行文件。
可执行文件与一般文本文件不同,都有内部结构。在UNIX/Linux系统中它有5个区,依次是文件头、正文段、数据段、重定位区和符号表区。文件头结构由幻数(标志可执行文件的特征),正文段长度,数据段长度,BSS段(Block Started by Symbol,存放未初始化的数据)长度,符号表长度,入口单元及各种标志组成。重定位时利用重定位区,而符号表用于调试程序;
存档文件是二进制文件的另一示例。在UNIX/Linux系统中,它由编译过、但未链接的库过程(模块)集合组成。每个存档文件的结构是在其目标模块之前有一个文件头,这个文件头由模块名、创建日期、文件拥有者、保护代码和文件长度等项组成。文件头全是二进制数码;