那些说的不是详细那些,因为都是一笔说过的,希望有做过的人能贡献下具体怎么弄
Fat32文件系统中对于长文件名来说,就是长度超过8.3形式的。对于文件名中带有小写字母的,就算长度在8.3内的。也算做长文件名。
对于短文件名来说,一个目录项占用32个字节。对于长文件名来说,将长文件名不止占用32个字节,根据文件名长度来看占用多少个目录项。
同时长文件名要和短文件名配合才有意义。
对于一个长文件名来说,一个目录项中的第一个字节代表这个是目录项中的第几个。接下来就是一Unicode来显示文件名中的字母,也就是两个字节代表一个字母。同时长文件名中属性为0F。同时还有几个字节是记录其他信息的。具体的记不太清,可以在网上查到。
长文件名之后是这个长文件名对应的短文件名,采用长文件名的头而已。其他也没什么区别了
FAT文件系统的长文件名,是用连续的多个目录入口来储存的,最后跟着一个目录入口,储存8.3格式的短文件名。长文件名用Unicode字符串表示,每个目录入口中有部分字节用做其它用途,例如第1字节表示目录入口的序号,从8.3的入口开始向上,第1个入口是01、第2个是02……最后一个用字母表示,A表示01,B表示02……。长文件名入口的属性比较特殊,好象是0F,记不清了。此外还有一个位置是校验和。LZ可以用磁盘编辑工具查看一下,一看就都明白了。
符合长文件名的几种情况:
1 含有 , ; + = [ ] 还有空格
2 文件名不符合8.3规则
3 文件名中含有两个以上的.
4 文件名中含有双字节的字符
跟字符的大小写没有关系(我亲自验证过)
查找方法:
1 首先判断此目录项第一个字节是不是0xe5或0x00(空目录项或者无效的目录项)
2 看0x0b是否为0x0f
然后把0x01~0x0a, 0x0e~0x1a, 0x1c~0x1f 这26个字节拷到Unicode字符串中,作为长目录项的一个子项
这个有相应的说明啦,有一本书,《数据还原。。。。》上面有很详细的讲解