|
|
|
|
|
|
|
|
|
|
|
|
|
从用户的角度来说,文件是一种抽象机制,它提供了一种把信息保存在磁盘等外部存储设备上,并且便于以后访问的方法。这种抽象性体现在,用户不必去关心具体的实现细节,例如这些信息被存放在什么地方,是如何存放的,等等。
|
|
|
|
当一个文件被创建时,必须给它指定一个名字,因为用户就是通过文件名来访问这个文件的。文件名是一个有限长度的字符串,它一般由两个部分组成:文件名和扩展名。有的系统要求文件名的长度一般不超过8个字符,但是很多系统支持长的文件名。
|
|
|
|
文件的逻辑结构指的是文件系统向外提供给用户的文件结构形式,它独立于文件在磁盘上的物理存储结构。文件的逻辑结构主要有三种:无结构、简单的记录结构和复杂结构。对于现代文件系统,通常采用的是无结构的形式。也就是说,整个文件是由一个无结构的字节流所组成,文件的大小也就是这些字节的个数。如下图所示,中间的横线表示一个用户接口,在它的下面是文件系统,上面是用户程序。对于文件系统来说,所谓的文件就是由很多个字节所组成的字节流,至于每个字节之间有什么样的关系,有什么样的结构,它并不知道。当然,在用户程序的内部,在具体使用该文件时,它的确是有结构的,如数组结构、记录结构、树形结构等,这完全是由用户程序自己来设计和维护的,与文件系统无关。
|
|
|
|
|
|
|
|
|
|
.按照文件的性质和用途,可将文件分为系统文件、库文件和用户文件。
|
|
|
|
.按照文件的保护方式,可将文件分为只读文件、读写文件和可执行文件。
|
|
|
|
.按照文件的功能,可将文件分为普通文件和目录文件。普通文件就是通常意义上所说的文件,它里面包含了用户的各种数据。目录文件是一种专用的系统文件,用来管理文件系统的组织结构。
|
|
|
|
.在有些操作系统中,还有一种特殊的设备文件,即用文件的形式来管理输入/输出设备。包括字符设备文件和块设备文件,前者用来描述串行的输入/输出设备,后者用来描述磁盘等块设备。
|
|
|
|
除了文件名之外,操作系统还会给每一个文件附加一些其他的信息,这些信息称为文件的属性。对于不同的操作系统,文件属性的类型和个数各不相同。一般来说,都会包含以下的一些属性:文件的保护信息、文件的创建者、只读标志位、隐藏标志位、系统标志位、文件的创建时间、最近访问时间、最近修改时间以及文件的长度信息等等。
|
|
|
|
|
|
文件的使用讨论的是操作系统所提供的与文件有关的系统调用。
|
|
|
|
|
|
|
|
.顺序存取:对于文件中的每一个字节或记录,只能从起始位置开始,一个接一个地顺序访问,不能跳跃式访问。这是早期的操作系统所提供的存取方式。
|
|
|
|
.随机存取:根据所需访问的字节或记录在文件中的位置,将文件的读写指针直接移至该位置,然后进行存取。每一次存取操作都要指定该操作的起始位置。现代操作系统都提供随机存取的方式。
|
|
|
|
|
|
文件的访问指的是与文件内容读写有关的各种文件操作,包括:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
文件的控制指的是与文件属性控制有关的各种文件操作,包括文件的创建、删除、读取文件属性、设置文件属性、修改文件名等。
|
|
|
|
|
|
为了对系统中的文件进行组织和管理,人们引入了目录的概念。目录也称文件夹,它是一张表格,记录了在该目录下每个文件的文件名和其他的一些管理信息。一般来说,每个文件都会占用这张表格的某一行,即一个目录项。由于文件系统中的目录是动态创建的,其大小是不断变化的,因此,目录通常都是以文件的形式存放在磁盘上。另外,在目录的管理上,也有一些相关的系统调用,如创建目录、删除目录、修改目录名等。
|
|
|
|
为了更好地组织文件,提高文件的访问效率,在目录的逻辑结构上,通常采用的是多级目录结构,也称树状目录结构或层次目录结构,其形状好像是一棵倒立的树。树的根结点称为根目录,然后在每一个目录下,既可以增加普通的文件,也可以增加新的子目录。
|
|
|
|
在多级目录结构中,主要有两种方法来指定需要访问的文件或目录:
|
|
|
|
.绝对路径名:对于每一个文件或目录,可以用从根目录开始依次经由的各级目录名,再加上最终的文件名或目录名来表示,在每一级目录名之间,用分隔符隔开。一个文件或目录的绝对路径名是唯一的,例如:\spell\mail\copy\all。
|
|
|
|
.相对路径名:用户首先指定一个目录作为当前的工作目录,然后在访问一个文件或目录时,可以使用相对于当前工作目录的部分路径名,即相对路径名,例如,假设当前的工作目录是\spell\mail\copy,那么使用相对路径名all的效果等价于使用绝对路径名\spell\mail\copy\all。
|
|
|