一种目录是用于包含文件夹和文件的容器。它以分层方式组织文件和文件夹。
目录有几种逻辑结构, 下面给出。
单级目录–
单级目录是最简单的目录结构, 其中所有文件都包含在同一目录中, 因此易于支持和理解。
但是, 当文件数量增加或系统具有多个用户时, 单级目录具有明显的限制。由于所有文件都在同一目录中, 因此它们必须具有唯一的名称。如果两个用户调用他们的数据集测试, 则违反了唯一名称规则。
优点:
- 由于它是单个目录, 因此其实现非常容易。
- 如果文件较小, 搜索将变得更快。
- 在这样的目录结构中, 文件创建, 搜索, 删除, 更新等操作非常容易。
缺点:
- 因为两个文件不能具有相同的名称, 所以可能会发生名称冲突。
- 如果目录很大, 搜索将花费大量时间。
- 在此不能将相同类型的文件分组在一起。
两级目录–
如我们所见, 单一级别的目录通常会导致不同用户之间的文件名混淆。解决此问题的方法是为每个用户创建一个单独的目录。
在两级目录结构中, 每个用户都有自己的目录用户文件目录(UFD)。 UFD具有相似的结构, 但是每个UFD仅列出单个用户的文件。系统的主文件目录(MFD)每当有新用户ID登录时, 即进行搜索。MFD通过用户名或帐号建立索引, 并且每个条目都指向该用户的UFD。
优点:
- 我们可以提供完整的路径, 例如/ User-name / directory-name /。
- 不同的用户可以具有相同的目录和文件名。
- 由于路径名和用户分组, 文件搜索变得更加容易。
缺点:
- 不允许一个用户与其他用户共享文件。
- 仍然不是很可伸缩, 同一类型的两个文件不能在同一用户中分组在一起。
树形目录–
一旦我们将两级目录视为高度为2的树, 自然的概括就是将目录结构扩展为任意高度的树。
这种概括允许用户在其中创建自己的子目录, 并相应地在其文件上进行组织。
树结构是最常见的目录结构。该树具有一个根目录, 并且系统中的每个文件都具有唯一的路径。
优点:
- 非常概括, 因为可以给出完整的路径名。
- 扩展性强, 名称冲突的可能性较小。
- 搜索变得非常容易, 我们既可以使用绝对路径, 也可以使用相对路径。
缺点:
- 每个文件都不适合分层模型, 文件可以保存到多个目录中。
- 我们无法共享文件。
- 这是低效率的, 因为访问文件可能位于多个目录下。
非循环图目录–
非循环图是没有循环的图, 并允许共享子目录和文件。同一文件或子目录可能位于两个不同的目录中。这是树形目录的自然概括。
当两个程序员在一个联合项目中工作并且他们需要访问文件时, 就可以使用它。关联的文件存储在子目录中, 从而将它们与其他项目和其他程序员的文件分开, 因为它们正在处理联合项目, 因此他们希望子目录位于自己的目录中。公用子目录应该共享。因此, 这里我们使用非循环目录。
需要注意的是共享文件与复制文件不同。如果任何程序员在子目录中进行了某些更改, 它将反映在两个子目录中。
优点:
- 我们可以共享文件。
- 由于路径不同, 搜索很容易。
缺点:
- 我们通过链接共享文件, 如果删除文件可能会导致问题,
- 如果链接是软链接, 则在删除文件后, 我们会留下一个悬空的指针。
- 如果是硬链接, 要删除文件, 我们必须删除与其关联的所有引用。
常规图目录结构–
在一般的图形目录结构中, 目录结构中允许循环, 在该目录结构中可以从一个以上的父目录派生多个目录。
这种目录结构的主要问题是计算文件和目录占用的总大小或空间。
优点:
- 它允许循环。
- 它比其他目录结构更灵活。
缺点:
- 它比其他人更昂贵。
- 它需要垃圾收集。