# 5.3 目录管理 ## 一、文件目录的概念 ### 1.1 什么是文件目录 **文件目录**:用于标识和检索文件的数据结构,是文件控制块(FCB)的有序集合。 ### 1.2 目录的功能 - **按名存取**:通过文件名找到文件 - **提高检索速度**:组织目录结构 - **文件共享**:多个用户共享文件 - **允许文件重名**:不同目录可以有同名文件 --- ## 二、目录结构 ### 2.1 单级目录结构 **结构**: ``` 根目录 ├── 文件A ├── 文件B ├── 文件C └── ... ``` **特点**: - 整个系统只有一个目录 - 所有文件都在同一目录下 **优点**: - 实现简单 **缺点**: - 不允许文件重名 - 文件查找慢 - 不便于分类管理 ### 2.2 两级目录结构 **结构**: ``` 根目录 ├── 用户1目录 │ ├── 文件A │ └── 文件B ├── 用户2目录 │ ├── 文件A │ └── 文件C └── ... ``` **特点**: - 根目录 + 用户目录 - 每个用户有自己的目录 **优点**: - 不同用户可以重名 - 便于用户管理自己的文件 **缺点**: - 用户不能创建子目录 - 不便于文件分类 ### 2.3 树形目录结构 **结构**: ``` 根目录 ├── 目录A │ ├── 子目录A1 │ │ └── 文件A1 │ └── 文件A ├── 目录B │ └── 文件B └── 文件C ``` **特点**: - 多级目录 - 每个目录可以包含子目录和文件 **优点**: - 便于文件分类管理 - 允许文件重名(不同目录) - 便于文件共享 **缺点**: - 查找路径较长 **路径表示**: - **绝对路径**:从根目录开始,如 `/home/user/file.txt` - **相对路径**:从当前目录开始,如 `./file.txt`, `../dir/file.txt` ### 2.4 无环图目录结构 **结构**: - 在树形目录基础上,增加共享链接 - 允许目录或文件有多个父目录 **实现方式**: - **硬链接**:多个目录项指向同一个FCB - **符号链接**:目录项指向另一个目录项 **优点**: - 便于文件共享 **缺点**: - 实现复杂 - 需要处理循环引用 ### 2.5 通用图目录结构 **结构**: - 允许目录中有环 **问题**: - 查找可能无限循环 **解决**: - 限制访问次数 - 不允许创建环 --- ## 三、目录的操作 ### 3.1 基本操作 **创建目录**: - 分配磁盘空间 - 初始化目录项 - 在父目录中添加目录项 **删除目录**: - 空目录:直接删除 - 非空目录: - 不删除非空目录(UNIX) - 递归删除(Windows) **查找目录**: - 按路径查找 - 从根目录或当前目录开始 **打开目录**: - 读取目录内容 **关闭目录**: - 释放资源 ### 3.2 目录查询技术 **线性查询**: - 顺序查找目录项 - 简单但慢 **哈希查询**: - 使用哈希表 - 快速但需要处理冲突 **B+树查询**: - 使用B+树索引 - 适合大目录 --- ## 四、目录的实现 ### 4.1 线性列表 **实现**: - 目录项线性排列 - 顺序查找 **优点**: - 实现简单 **缺点**: - 查找慢:O(n) ### 4.2 哈希表 **实现**: - 使用哈希函数定位目录项 **优点**: - 查找快:O(1) **缺点**: - 需要处理冲突 - 需要固定大小 --- ## 五、考研重点 1. **目录的功能**:按名存取、提高检索速度、文件共享、允许重名 2. **目录结构**: - 单级目录:特点、优缺点 - 两级目录:特点、优缺点 - 树形目录:特点、优缺点、路径表示 - 无环图目录:共享链接 3. **目录的操作**:创建、删除、查找 4. **目录的实现**:线性列表、哈希表 --- *下一节:5.4 文件存储空间管理*