文件的删除
在前面已经说过如何通过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的内容: