我试图了解FAT文件系统的工作原理。从附加的FAT 16分区的第一个扇区我可以理解,
根目录位于第404个扇区(第0x32800个字节)
附加地址为0x32800的根目录。根目录有两个名为a,b的文件夹和一个名为file.txt的文件。在上面的给定图像中,如何区分文件和文件夹。
下列疑问: 1.文件夹条目应以0x2E开头,但没有这样的值。那么如何确定给定条目是文件还是文件夹? 2.如您所见,根目录中的每个条目占用64个字节(而不是32个字节)。每个文件和文件夹似乎有2个32byte条目。例如,文件夹“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”对应的正确的簇号?
答案 0 :(得分:3)
不,文件夹条目不以"开头。" (0x2E)除非是为了。和子目录的条目(这些不在根目录中)。如果dirent是目录,则dirent的属性字节设置为0x10位。
您还在查看具有长文件名的目录。原始FAT文件系统规范仅允许11个字符名称全部为大写并且在OEM代码页中。 Windows 95对此进行了扩展。在stackoverflow上解释它是如何工作的非常复杂。我建议查看有关LFN或长文件名的MSDN文档。
答案 1 :(得分:0)
FAT **文件系统将所有文件保存为一个基本大小,除非文件大于该大小,然后重新调整大小以容纳整个文件
但这里的重点是FAT文件系统主要是好的,如果你有其他明智的磁盘空间我会建议使用NTFS文件系统,如果可能的话。您显示的图像看起来像软盘驱动器的注册表代码