操作系统 文件的逻辑结构
什么是文件的逻辑结构呢?我们在用电脑的时候无时不刻不再接触文件,比如一个word文档,一个txt文档,或者一
张图片,或者我们C语言写的一句printf(f所指的就是文件)。甚至我们用的键盘,鼠标都被操作系统当作文件处理。
但是我们看到的这些一切都是逻辑结构的文件。逻辑结构的文件有两种分类。记录型文件和流式文件。
记录型文件:记录型文件是指有结构的文件,这种文件便于检索和修改,占用空间小,方便用户操作。
根据文件的长度可以划分为两种文件:
1、定长记录型文件:这种文件的长度是固定的,各记录中的数据项都在数据的相同位置,在检索时,可以根据记
录号和记录长度来确定记录的逻辑地址。
对于一些大数据的处理,处理一些不变的历史数据时,这种历史数据都是固定长度的文件。
2、变长记录文件:顾名思义,这种文件的长度是变化的,由于记录型文件的长度是变化的,我们在检索的时候就
必须从第一个记录逐一向后查找。比如我们记录医院病人的记录,由于每个病人填的病例信息是不断变化的,这时
候就需要用变长的记录文件来记录。
根据对文件的增删改查效率,记录型文件又被划分为以下几类:
1、顺序文件:这种文件是指按照某种排列的记录所组成的文件,这样可以大大提高检索效率,这种文件多是定长
的文件,需要注意的是对这种文件的插入,删除操作等并不方便。
2、索引文件:这种文件可以理解为一张索引表。为每个记录建立一个独立的索引,当查到某个记录的时候,可以
根据索引迅速定位到要查的位置。
3、索引顺序文件:他是将顺序文件中的多少条记录根据某个特点分出来,建立索引表。比如把前50条记录抽出来
组成一组。然后为这个组建立索引。或者根据人名的首写字母分组然后建立索引。这样直接跳过多少条记录进行
查找,既节省了存储大量索引的时间,有提高了查询的效率。是上面两种的中和。
4、散列文件:这种文件是指为每个记录建立一个随机索引,这些索引存储在哈希表中,索引是随机存储的,不需
要去寻找一片连续的空间,对连续空间没有要求,而且也能够根据索引迅速定位逻辑地址。常用于要求快速访问记
录的情形(如目录,价格表等)但是如何有效解决散列的位置和效率至今还在探索。
流式文件:流式文件是指没有结构的文件,这种文件只是一串信息的集合,不需要特殊的结构来约束他
这种文件有两种分类:
二进制形式的流文件和字符文件:这两种文件可以用在变成语言的文件传输上,以java为例:
FileOutputStream:读取二进制文件。FileInputStream:写入二进制文件
FileReader:读取字符文件。FileWriter:写入字符文件。
这两种类型文件也经常会用于网络传输,用于前后端数据交互。
从直观上说:二进制文件只指全部由二进制数或者十六进制数组成的文件。而字符文件可以包括一些英文字符
或者中文字符串。另外,字符流文件的无结构性方便用户的操作。