计导 第 13 章 文件结构

本文介绍了文件的几种存储方式,包括顺序文件、索引文件和散列文件,重点讲解了散列方法,如直接散列法和求模法,并讨论了散列冲突及其解决策略,如开放寻址和链表解决法。此外,还提到了目录在文件系统中的作用,以及文本文件和二进制文件的区别。
摘要由CSDN通过智能技术生成

目录

顺序文件

索引文件

散列文件

散列方法

直接散列法

求模法

散列冲突

冲突解决

目录

路径和文件名

文本文件和二进制文件


文件是存储在辅助存储设备或二级存储设备中,文件在二级存储设备中是可以读写的。文件是记录的集合,存取方式决定了怎样检索记录:顺序或者随机的。

顺序文件

顺序文件是指记录只能按照顺序从头到尾一个接一个地进行存取,如图记录被一个接一个地存储到辅助存储器中,只能从头到尾一个个的查找。

索引文件

索引文件有数据文件组成,它是带索引的顺序文件,索引本身只占两个字段:顺序文件的键和在磁盘上相应记录的地址。索引文件必须将文件的索引保存在磁盘上,当需要处理数据文件时,先将索引文件导入到内存中,搜索索引找到数据记录的地址,再访问数据文件存取记录。

散列文件

散列文件用一个数学函数来完成键和地址的映射,在散列文件中,不需要额外的文件,直接用函数来寻找地址。

散列方法

直接散列法

键不经过处理直接映射,简单的说键的值就是映射的地址值。没有冲突但很浪费。

求模法

也称为除余散列法,求模方法使用文件大小后,将余数作为地址。用素数作为除数冲突要小一些。

还有数字析取法、平方中值法、折叠法、旋转法、和伪随机法等散列的方法。

散列冲突

因为在文件中有很多键对应一个地址,很可能多于一个的键将被散列为文件中的同一个地址。这就造成了冲突。如下图所示,两个键散列到了一个地址。

冲突解决

除了直接散列的方法,其余的方法都可能带来冲突,都可以用于冲突解决法。

开放寻址:当发生冲突时,主区地址将查找开放的或空闲的地址来存新数据,但是这也会造成了新的冲突。

链表解决法:在这种方式中,第一条记录存储在内部地址,每一条记录中包含了一个指向下一条记录的指针。

桶散列法:散列到桶,桶是一个能容纳多个记录的节点,这种方法的缺点是可能有很多浪费存储单元。 

这里的桶的结构是一个固定大小的数组,才会有浪费空间的说法,其实上面的链表解决法也可以理解为散列到桶,而桶的数据结构是一个链表。

目录

在操作系统中基本上都会有目录,目录被表示为含有其他文件信息的一种特殊文件类型。目录像一种索引文件,告诉操作系统文件在辅助存储设备上的位置,目录也包含了它所有文件的其他信息:访问权限、文件修改日期等。在大多数操作系统中,目录被组织成像树的数据类型。

路径和文件名

文件系统中没有目录和文件都必须有一个名字。可以用相对路径和绝对路径访问:

文本文件和二进制文件

不管是什么文件,在存储设备中存的都是二进制,其通过文件头部编码来区别不同类型,同时操作系统使用不同方式类解释打开。 下图使用不同的解释方式解释相同的一段二进制编码,得到的是不同的结果。


凡是过往,即为序章

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值