2

我试图了解 FAT 文件系统是如何工作的。从附加的 FAT 16 分区的第一个扇区我可以理解,

  1. 每个扇区的字节数 = 512。
  2. 每个集群的扇区 = 4。
  3. FAT 16 文件系统。
  4. 保留扇区 = 4。
  5. FAT 表计数 = 2。
  6. 根目录中的条目数 = 512。
  7. 总扇区 = 204800。
  8. 根目录扇区 = 32。
  9. FAT 表的大小 = 200。
  10. 第一个数据扇区 = 436 (4 + 2 * 200 + 32)。
  11. 集群计数 = 51091。

FAT分区的第一个扇区

根目录位于第 404 个扇区(第 0x32800 个字节)

根目录

附加地址 0x32800 的根目录。根目录有两个文件夹a、b 和一个文件file.txt。在上面的给定图像中,如何区分文件和文件夹。

下面列出的疑问: 1. 文件夹条目应该以 0x2E 开头,但没有这样的值。那么如何判断给定条目是文件还是文件夹呢?2. 如您所见,根目录中的每个条目占用 64 个字节(而不是 32 个字节)。每个文件和文件夹似乎有 2 个 32 字节的条目。例如,文件夹“a”的条目位于 0x32800 和 0x32820(共 64 字节)。3. 在这种情况下,值 0x41 表示什么?值 0x41 出现在 0x32800、0x32820、0x32840、0x32880。0x32860 和 0x328A0 处的值与 0x41 不同。4. 从地址 0x32800 (0x32800 + 0x1a = 0x3281a) 的偏移量 0x1A 的值为 0,从地址 0x32820 (0x32820 + 0x1a = 0x3283a) 的偏移量 0x1A 的值为 3. 对应于文件夹 'a' 的正确簇号是哪个?

4

2 回答 2

3

不,文件夹条目不以“。”开头。(0x2E) 除非它们用于 . 和 .. 子目录的条目(这些不在根目录中)。如果dirent 是目录,则dirent 的属性字节设置为0x10 位。

您还在查看具有长文件名的目录。最初的 FAT 文件系统规范只允许 11 个字符的名称全部为大写并且在 OEM 代码页中。Windows 95 对此进行了扩展。在 stackoverflow 上解释它是如何工作的非常复杂。我建议查看 LFN 或长文件名的 MSDN 文档。

http://technet.microsoft.com/en-us/library/cc938438.aspx

于 2012-12-03T21:53:41.103 回答
0

FAT** 文件系统将所有文件保存为一个基本大小,除非文件大于该大小,然后它会重新调整大小以容纳整个文件

但这里的要点是,如果您有分配的磁盘空间,FAT 文件系统主要是好的,否则如果可能的话,我会推荐使用 NTFS 文件系统。您显示的图像也看起来像软盘驱动器的注册表代码

于 2013-05-10T16:22:16.507 回答