您好,欢迎访问华信数据恢复网站

数据恢复

致力于打造权威数据恢复品牌

联系客服

FAT文件系统原理四(5)

时间:2013年05月23日信息来源:不详 点击: 【字体:


    对于短文件格式的目录项。其参数意义见表14:

表14   FAT32短文件目录项32个字节的表示定义
字节偏移(16进制) 字节数 定义
0x0~0x7 8 文件名
0x8~0xA 3 扩展名
0xB* 1 属性字节 00000000(读写)
00000001(只读)
00000010(隐藏)
00000100(系统)
00001000(卷标)
  00010000(子目录)
00100000(归档)
0xC 1 系统保留
0xD 1 创建时间的10毫秒位
0xE~0xF 2 文件创建时间
0x10~0x11 2 文件创建日期
0x12~0x13 2 文件最后访问日期
0x14~0x15 2 文件起始簇号的高16位
0x16~0x17 2 文件的最近修改时间
0x18~0x19 2 文件的最近修改日期
0x1A~0x1B 2 文件起始簇号的低16位
0x1C~0x1F 4 表示文件的长度

      * 此字段在短文件目录项中不可取值0FH,如果设值为0FH,目录段为长文件名目录段

说明:
    (1)、这是FAT32短文件格式目录项的意义。其中文件名、扩展名、时间、日期的算法和FAT16时相同的。
    (2)、由于FAT32可寻址的簇号到了32位二进制数。所以系统在记录文件(文件夹)开始簇地址的时候也需要32位来记录,FAT32启用目录项偏移0x12~0x13来表示起始簇号的高16位。
    (3)、文件长度依然用4个字节表示,这说明FAT32依然只支持小于4GB的文件(目录),超过4GB的文件(目录),系统会截断处理。

    FAT32的一个重要的特点是完全支持长文件名。长文件名依然是记录在目录项中的。为了低版本的OS或程序能正确读取长文件名文件,系统自动为所有长文件名文件创建了一个对应的短文件名,使对应数据既可以用长文件名寻址,也可以用短文件名寻址。不支持长文件名的OS或程序会忽略它认为不合法的长文件名字段,而支持长文件名的OS或程序则会以长文件名为显式项来记录和编辑,并隐藏起短文件名。
    当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
    (1)、取长文件名的前6个字符加上"~1"形成短文件名,扩展名不变。
    (2)、如果已存在这个文件名,则符号"~"后的数字递增,直到5。
    (3)、如果文件名中"~"后面的数字达到5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文件名的剩余字母生成短文件名的后四个字母,然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复的文件名)。
    (4)、如果存在老OS或程序无法读取的字符,换以"_"

    长文件名的实现有赖于目录项偏移为0xB的属性字节,当此字节的属性为:只读、隐藏、系统、卷标,即其值为0FH时,DOS和WIN32会认为其不合法而忽略其存在。这正是长文件名存在的依据。将目录项的0xB置为0F,其他就任由系统定义了,Windows9x或Windows 2000、XP通常支持不超过255个字符的长文件名。系统将长文件名以13个字符为单位进行切割,每一组占据一个目录项。所以可能一个文件需要多个目录项,这时长文件名的各个目录项按倒序排列在目录表中,以防与其他文件名混淆。
    长文件名中的字符采用unicode形式编码(一个巨大的进步哦),每个字符占据2字节的空间。其目录项定义如表15。

表15   FAT32长文件目录项32个字节的表示定义
字节偏移
(16进制)
字节数 定义
0x0 1 属性字节位意义 7 保留未用
6 1表示长文件最后一个目录项
5 保留未用
4 顺序号数值
3
2
1
0
0x1~0xA 10 长文件名unicode码①
0xB 1 长文件名目录项标志,取值0FH
0xC 1 系统保留
0xD 1 校验值(根据短文件名计算得出)
0xE~0x19 12 长文件名unicode码②
0x1A~0x1B 2 文件起始簇号(目前常置0)
0x1C~0x1F 4 长文件名unicode码③

本新闻共6页,当前在第5页  1  2  3  4  5  6  


(作者:佚名 编辑:admin)
延伸阅读: