FAT/FAT32曾经是windows下主流文件格式,虽然FAT已经这么多年了,也见识到一些缺点,但熟悉FAT,还是对文件系统认识有很大帮助。
一般来说,需要具备一些前期知识:
1. 文件存在flash或硬盘里,还是一个个字节进行存储的,存储介子本身不负责具体内容。如果要对硬盘的数据进行识别,必须需要一定格式,还需要一个驱动程序进行识别。
2. 文件格式最主要作用:格式化管理,快速查找文件
还有几个知识点:
扇区:一般为512,最小分割单位,但不是最小管理单位。
簇:管理最小单位,一般是由多个扇区组成,有2、4、8、16、32或64几种情况。如果=16,即8K=16*512,也就是说一个文件最小也得占8K空间
DBR及保留扇区(FAT16不存在)、文件分配表区(FAT1、FAT2)、数据区(DATA区)。
反过来说,一个文件至少占一族,或多簇。最后一簇往往是未存满的,这样肯定会带来空间的浪费。(但也没太好办法,毕竟是要快速查找文件的)
当然,这个可以根据实际情况来设定,毕竟应用场景不一样。
FAT16的根目录区只有32个扇区,计算一下,每个扇区512字节,共32个扇区,而每个文件名至少要占用32个字节(后面会介绍),很显然,根目录最多只能放512个文件了。
FAT16 这里存在致命缺陷的:
例如:我们的文件是存在根目录的,那么最多也只能存放512个文件(假设文件名又很长的话,这个数量就更小了)
FAT32对这方面进行了优化,可以支持更多的文件数量,但格式变得复杂了,查找时也是先从前面扇区往后跳(会根据目录最后指向下一个扇区地址),所以时间上也浪费很多,搜索起来非常慢
FAT大体格式:
这里:FAT表有两个,一般FAT2为镜像。FAT表非常重要,一般如果文件名乱码,或一下子消失了,往往是FAT表坏掉了。
MBR: Main Boot Record 主引导记录区
DBR:Dos Boot Record 操作系统引导记录区
以下,是我对FAT16格式注解:
FAT格式:(FAT16)
FAT32格式:
FAT表格式:
FAT表之后就是目录区:
目录区是由一个个目录项构成,类似于FAT表。其中每一个目录项占用32个字节,可以是代表长文件名目录项、文件目录项、子目录项等。对于短文件名格式的目录项,其参数的含义如表1所示(不会画这种表,从别处引用了一个)</