fat是什么文件refs文件系统

09年的时候,虽然接触了FAT文件系统,但是FAT还很简单。 我今天正好看到了写在之前下载的gdfgd0218@126.com上的“FAT32文件系统详细信息”一章。 顺便花了一点时间整理。

我以前对FAT的了解还很深,现在摘录几个要点,半原创半转载吧。

FAT应该只会写这个博客,干脆放入NTFS吧。

FAT重要数据结构:FAT表,目录项目

FAT表包含有关多个文件的元数据,包括群集通道关系、目录条目记录中的文件名和大小的起始地址。

FAT12、FAT16的根目录也属于数据区域,但不是由集群管理的。

也就是说,FAT12、FAT16的根目录中没有集群号,他们的第二个集群在根目录之后开始。 FAT32的根目录通常位于2号群集上。

FAT区域的大小可以通过将每个FAT表的大小扇区数乘以FAT表的个数而得到的扇区数和FAT区域的大小,从而知道数据区的开始位置,并得到文件系统的第一个集群的位置。

FAT表

编号为0的FAT表项和编号为1的FAT表项由系统维护,并存储特殊标志的内容。 2号以后,各地址对应于数据区的集群号,FAT表的地址号与数据区的集群号相同。

数据区域紧接在FAT2之后,被分成一个个的集群。 所有群集都从2开始编号。 也就是说,集群号2的开始位置是数据区域的开始位置。

原则上,FAT32允许根目录位于数据的任何位置,但通常位于群集号2。

某个集群开头扇区号=保留扇区数FAT表大小的扇区数 FAT表数该集群号- 2)每个集群的扇区数

目录项目

根目录或子目录下的目录条目具有以下基本特性:

1 .分配给文件或子目录的第一个集群的集群号记录在该目录条目中,其他后续集群由FAT表的FAT表链跟踪。

2 .在目录条目中,除了子目录或文件开头集群号之外,还记录名称、大小子目录中没有大小)、时间值等信息。

3 .每个子目录或文件除了具有短文件目录条目之外,还具有长文件名目录条目。

4 .短文件名目录项固定占用32字节,长文件名目录项根据需要占用一个或多个32字节。

5 .对于相同的子目录或文件,长文件名目录条目存储在短文件名目录条目之前。 如果长文件名目录条目占用32个或更多字节,它将按相反的顺序存储在段文件名目录条目之前。

子目录

创建子目录后,将在分配的群集区域的开头创建两个目录条目.和.描述子目录本身及其父目录的信息,并建立上下目录之间的联系。

1 .目录条目位于子目录的起始群集的第一个目录条目中,表示该群集是子目录的起始群集。

另外,该目录条目实际上是目录自身的描述,记录有该子目录的时间信息、开头集群号码等。 需要

请注意,记录的开始群集编号是子目录当前所在的位置。

2 .目录条目位于子目录起始群集的第二个目录条目的位置,用于描述有关子目录父目录的信息

1 .短文件名目录条目

短文件名目录条目是FAT文件系统中非常重要的数据结构。 之所以将其称为短文件名目录条目,是因为记录的文件名继续了DOS时代的8.3格式。

即,8个字符的名称和3个字符的扩展名:

a .文件名小于8个字符时,用0x20填充。

b .超过8个字符将被截断。 因为短文件名目录条目没有足够的空间来记录超出的部分。

截断方法是在文件名的前6个字符中加上“~1”,并将其扩展名。 如果有同名的文件,请依次增加其值。

c .对于子目录,用“0x20”填充扩展名部分。

为了解决长文件名问题,在FAT文件系统中添加了“长文件名”目录条目结构。 从windows95开始,不管文件名的长度是否超过8个字符,

短文件名不区分大小写,长文件名区分大小写,因此会创建短文件名目录条目和长文件名目录条目。

2 .短文件名目录条目的特性

每个文件或子目录都有一个32字节的目录条目,用于描述文件或目录的属性。

目录条目是否被分配为由第一个字节描述。 分配的目录条目的第一个字节是文件名的第一个字符。

删除文件或目录时,相应目录条目的第一个字节设置为0xE5。

3 .长文件名的目录条目

FAT32文件系统为文件分配短文件名目录项,同时分配长文件名目录项。

创建文件的长文件名LFN )类型的目录条目时,文件系统没有放弃原始短文件名的目录条目。

具有LFN的文件还具有普通短文件名sfn )类型的目录条目。

之所以仍需要SFN,是因为LFN目录条目只包含文件的名称,而不包含时间、大小、起始群集号等信息。 这些信息仍然需要在SFN目录条目中记录。

4 .长文件名目录项的特性

如果文件名超过8个字符,则会截断名称并创建短文件名。 将短文件名保存为短文件名

目录项中。
长文件名则存放在长文件名目录项中。长文件名目录项有以下的特性:
  a.LFN 和 SFN 目录项结构在相同位置有一个属性标志字节,LFN 目录项使用一个特定的属性值,以说明它是一个长文件名项。
  b.项中的其他字节,使用 UTF-16 编码(UTF-16 是 Unicode 的其中一个使用方式。  UTF 是
Unicode/UCS Transformation Format,即把 Unicode 转做某种格式的意思),存储 13 个 Unicode字符的文件名,每个字符占用两个字节。
  c.如果文件名长于 13 个字符,则继续为其分配 LFN 项,直到够用为止。
  d.所有 LFN 都包含一个校验和,通过这个校验和将其与相应的 SFN 项关联起来。
  e.一个文件的所有 LFN 项按倒序排列在它的 SFN 项前面,即文件名的第一部分距离 SFN 是最近的。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注