您所在的位置: 主页 > 关于我们 > 技术专题 > 行业技术 >

长文件名目录项

来源:未知点击数:更新时间:2015-03-25

格式不允许文件的名字长度超过8 个字节,如果文件名超过了 8 个字节或使用了中文,系统会在为其建立短文件名H录项的同时,再为其另外建立长文件名目录项,长文件名目录项只
负责记录文件名,不记录其他任何应该由短文件名目录项记录的信息。
每个长文件名目录项同样占用3 2个字节,每个M录项可以记录13个Unicode字符(每个Unicode字符占用两个字节)。如果一个文件(或文件夹)的名字超过了 1 3个字符,则会继续为其分配长文件名目录项,直到够用为止。一个文件(或文件夹)的所有长文件名H录项,依次存放在其短文件名目录项之前,编号越小的长文件名目录项越靠近其短文件名目录项。
所有的长文件名目录项中都与短文件名目录项在相同位置设置属性值,以说明该目录项是长文件名目录项。同一个文件(或文件夹)的所有长文件名目录项都包含-个校验和,通过这个校验和可以将其与相应的短文件名目录项关联起来。
1. 长文件名目录项数据结构
长文件名B录项的数据结构
(1) 0x00: 1个字节,长文件名U录项的序列号,一个文件的第1个长文件名序列号为1,然后依次递增。如果娃该文件的敁后一个长文件名H录项,则将该H录项的序5•与0x40进行“或
( O R ) 运算”的结果写入该位贾。如果该长文件名B录项对应的文件或子目录被删除,则将该字节设胥成删除标志0xE5。
(2) 0x01~OxOA: 5个字节,长义件名的第1~5个字符。长文件名使用Unicode码,每个字符需要两个字节的空间。如果文件名结束但还有未使用的字节,则会在文件名后先填充两个字节
的“00” ,然后开始使用OxFF进行填充。
(3) OxOB: 1个字竹,长U录项的属性标志,一定是OxOF。
(4) OxOC:保留。
(5)0x0D: 1个字节,校验和。如果一个文件的长文件名需要几个长文件名目录项进行存储,则这些长文件名0 录项具有相同的校验和。
(6) OxOE~0x19: 12个字节,文件名的第6~11个字符,未使用的字节用OxFF填充。
(7) OxlA~OxlB: 2个字节, 保留。
(8) OxlC~OxlF: 4 个字节, 文件名的第12~13个字符, 未使用的字节甩OxFF填充。
2. 长文件名目录项实例分析
这里建立一个名字为“abcdefghijklmnopqrstuvwxyzl234567890.txt” 的文件,可以蔚到除丫 -个短文件名目录项以外,还使用了 4 个K;文件名录项。
敁下面的一个0 录项是这个文件的fel文件名目录项。由短文件名向上,是它的长文件名I I录项。“abcdefghijklmnopqrstuvwxyzl234567890.txt” 共有4 0个字符,每个K文件名I彳录项可以记
录13个字符,因此需要4 个长文件名目录项。
短文件名目录项向上第1个0 录项是它的第1个长文件名口录项,从每个长文件名目录项的第1个字节可以看出它们的序号,可以看到它的编号为0x01。再来看第1个长文件名目录项的内容:
(1) OxOB字节处的“0F” 表示这是一个长文件名目录项。
(2) 0x00字节的“01” 表示这是该文件的第1个长文件名目录项。
(3) 0x01~OxOA字节处的10个字节为文件名的第1~5个字符“ abcde” ,OxOE~Ox 19字节处的12个字节是文件名的第6~11个字符“ fghijk” ,OxlC~OxlF处的4 个字节是文件名的第
12~13个字符“ lm”。
再向上,第2、3 个长文件名目录项的第1个字节“02” 、“03” 表示这是该文件的第2、3个长文件名目录项,各部分字节的含义读者可以自行分析。
第4 个长文件名目录项的第1个字节为“44” ,是0x40和0x04进行或运算的结果,说明这是该文件的第4 个长文件名目录项,也是最后一个。它的偏移0x01~0x02处的两个字节为长文件
名的最后一个字符“ t” ,后面未使用的文件名部分先填充了两个字节的“00” ,然后开始用OxFF进行填充。
再看每个长文件名目录项偏移OxOD的位置,该处的值是长文件名目录项的校验值,可以看到4 个长文件名目录项此处的值都是0 x 2 7 ,说明这是同一个文件的长文件名目录项。

分享到:QQ空间新浪微博腾讯微博人人网微信