文件的删除
在前面已经说过如何通过BPB里的各项参数去找到Data Area,从而得到文件对应的Directory Entry,最后找到文件的内容;对于目录,也是大同小异,不同之处只是更“曲折”一点,会先找到目录,去目录的“内容”里找到文件的Directory Entry,进一步,才可以找到文件内容。那么,在FAT32里,文件如何删除?
实际上非常简单,FAT32文件系统在删除文件的时候,仅仅是对其文件名进行处理,对于内容是不做任何处理的。对文件名的处理,就是把其所相关的所有Directory Entry(参考篇二的Long Name Entry)的第一个byte都置为0xE5,此时就认为该文件已经被删除了。还是用FAT32的image为例来观察:
首先用dd命令创建一个空的文件,然后用mkfs.vfat对其格式化,接着挂载到/mnt/目录,后面创建一个长文件名的文件,叫做abcdefghijklmnopqrstuvxwyz.1234567890,里面的内容是通过“echo "just a test string for this long name file" >> abcdefghijklmnopqrstuvxwyz.1234567890” 完成的。下图是test.img的内容:
接下来就是把它删除之后的状态,如下图:
很容易可以看到,从0x9e000 - 0x9e070一共4个Directory entry的第一个字符都变成0xE5了,而它的文件内容在0x9e200的地方并没有任何改变。

本文详细介绍了FAT32文件系统的文件和目录删除过程。在FAT32中,删除文件只需将Directory Entry的首字节设为0xE5,内容保持不变。删除目录时,会将目录及其包含的文件Directory Entry置为0xE5。此外,文章还探讨了FAT32表用于跟踪文件簇链的作用,以及FsInfo区域中FSI_Nxt_Free指针在高效分配簇上的重要性。
最低0.47元/天 解锁文章
1758

被折叠的 条评论
为什么被折叠?



