文件是什么(分享文件概念与文件的分类)
爱跨境 跨境电商 2022-06-06 22:24:10 · 热度999

文件(File)是被命名的相关信息的集合体。它通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。例如用户编写的一个源程序、经编译后生成的目标代码程序、初始数据和运行结果等,均可以文件形式保存。所以,文件表示的对象相当广泛。一般地,文件是由二进制代码、字节、行或记录组成的序列,它们由文件创建者或用户定义。

文件中的信息由创建者定义。很多不同类型的信息都可存放在文件中,如源程序、目标程序、可执行程序、数值数据、文本、工资单、图形图像、录音等。根据信息类型,文件具有一定的结构。如文本文件是一行一行(或页)的字符序列;源文件是子程序和函数序列,它们又有自己的构造,如数据说明和后面的执行语句;目标文件是组成模块的字节序列,系统链接程序知道这些模块的作用;而可执行文件是由一系列代码段组成的,装入程序可把它们装入内存,然后运行。

文件类型

为便于管理和控制文件,常把文件分成若干类型。由于不同系统对文件的管理方式不同,因而对文件的分类方法也有很大差异。下面是常用的几种文件分类方法。

  • 按用途分类
(1)系统文件—— 由操作系统及其他系统程序的信息所组成的文件。这类文件对用户不直接开放,只能通过操作系统提供的系统调用为用户服务。

(2)库文件—— 由标准子程序及常用的应用程序组成的文件。这类文件允许用户使用,但用户不能修改它们。

(3)用户文件—— 由用户创建、管理的文件,如源程序、目标程序、原始数据、计算结果等。这类文件可由创建者(即文件主)或被授权者进行适当的读、写或其他操作。
  • 文件中的数据形式分类
(1)源文件—— 从终端或输入设备输入的源程序和数据所构成的文件,它通常由ASCII码或汉字组成。

(2)目标文件—— 源程序经过相应语言的编译程序进行编译后,尚未经过链接处理的目标代码所形成的文件。它属于二进制文件。

(3)可执行文件—— 经过编译、链接之后所形成的可执行目标文件。
  • 按存取权限分类
(1)只读文件—— 仅允许对其进行读操作的文件,不允许写操作。

(2)读写文件—— 允许文件主和被授权用户对其进行读或写操作的文件。

(3)可执行文件—— 允许被授权用户执行它,但通常不允许读或写。
  • 按保存时间分类
(1)临时文件—— 用户在一次解题过程中建立的“中间文件”,它只保存在磁盘上,当用户退出系统时,它也随之撤消。

(2)永久文件—— 长期保存的有价值的文件,以备用户经常使用。
  • 在UNIX/Linux和MS-DOS系统中,按文件的内部构造和处理方式分类
在这些系统中文件类型主要有普通文件、目录文件和特殊文件。

(1)普通文件—— 由表示程序、数据或文本的字符串构成,内部没有固定的结构。这类文件包括一般用户建立的源程序文件、数据文件、目标代码文件,也包括各种系统文件(如操作系统本身的众多代码文件)和库文件(如标准I/O文件和数学函数文件)。

(2)目录文件—— 由下属文件的目录项构成的文件。它类似于人事管理方面的花名册—— 本身不记录个人的档案材料,仅仅列出姓名和档案分类编号。对目录文件可进行读、写等操作。

(3)特殊文件—— 特指各种外部设备。为了便于统一管理,系统把所有I/O设备都作为文件对待,按文件格式提供用户使用,如目录查找、存取权限验证等方面与普通文件相似,而在具体读、写操作上,要针对不同设备的特性进行相应处理。特殊文件分为字符特殊文件和块特殊文件。前者是有关输入/输出的设备,如终端、打印机和网络等;后者是存储信息的设备,如硬盘、软盘和磁带等。

普通文件通常分为ASCII文件和二进制文件。ASCII文件由只包含ASCII字符的正文行组成,每个正文行以回车符或换行符终止,各行的长度可以不同。ASCII文件又称文本文件,常用来存储资料、程序源代码和文本数据。文本文件的最大特点是可以直接显示和打印,可用普通文本编辑器进行编辑加工。

二进制文件所包含的每个字节可能有256种值。因此,对于表达信息来说,二进制文件是一种更为有效的方式,但它不能在终端上直接显示出来。大家最熟悉的二进制文件恐怕就是可执行文件。

可执行文件与一般文本文件不同,都有内部结构。在UNIX/Linux系统中它有5个区,依次是文件头、正文段、数据段、重定位区和符号表区。

文件头结构由幻数(标志可执行文件的特征),正文段长度,数据段长度,BSS段(Block Started by Symbol,存放未初始化的数据)长度,符号表长度,入口单元及各种标志组成。重定位时利用重定位区,而符号表用于调试程序;

存档文件是二进制文件的另一示例。在UNIX/Linux系统中,它由编译过、但未链接的库过程(模块)集合组成。每个存档文件的结构是在其目标模块之前有一个文件头,这个文件头由模块名、创建日期、文件拥有者、保护代码和文件长度等项组成。文件头全是二进制数码;