我试图从更高(更合乎逻辑)的级别了解 FAT 文件系统是如何工作的。FAT 文件系统有一个文件分配表,磁盘中每个可用的分配单元(集群)都有一个条目。该数据结构用于将文件与该文件出现在磁盘上的第一个簇的地址进行映射(一个文件几乎肯定会占用多个簇,并且这些簇以链表样式连接在一起)。到目前为止,一切都很好。但是文件分配表中的key是什么?文件名是否带有完整路径?
例如,假设我需要访问文件 C:\folder1\myFile.txt,I/O 管理器在文件分配表中搜索文件名(包括路径),直到找到一个条目,如果是,它返回第一个集群的地址。它是这样工作的吗?我在网上阅读了很多关于这个主题的文档,但不知何故,对文件分配表的访问对我来说仍然是模糊的。预先感谢您的帮助。
[编辑]
我在网上阅读的越多,我就越困惑。我将尝试这个简单的例子,希望它能澄清我的问题。假设我的 C 盘中只有 2 个文件:
C:\myFile.txt
C:\folder1\myFile.txt
文件分配表(以非常抽象的方式)将有 3 个条目:
| Filename | Extension | First Cluster |
|----------|-----------|---------------|
1 | MYFILE | TXT | 150 |
2 | FOLDER1 | | 300 |
3 | MYFILE | TXT | 900 |
假设到目前为止我是正确的,假设我想访问 C:\folder1 中的 myFile.txt:我不能使用文件名 (MYFILE.TXT) 本身作为我的密钥,因为我有 2 个同名条目(我不知道该选择哪个条目)。
此时我想我必须从文件夹开始,所以我扫描 FAT 以找到 FOLDER1:我得到条目 #2(集群 300)。下一步是什么?我将如何继续扫描表以查找“MYFILE.TXT”所需的目录条目,以便可以访问指定集群的硬盘驱动器?
也许我从错误的角度来看这个,我不知道。感谢大家的帮助。