FAT32或FAT16下的长文件名实现

[复制链接]
6883|10
 楼主| lijian910 发表于 2008-11-26 23:44 | 显示全部楼层 |阅读模式
现在我实现了FAT32跟FAT16下的短文件名,但在实现长文件名时有些迷惑;<br />如下:暂时列出2个迷惑<br />1,创建一个文件名时,除了要建长目录项,也要建短目录项,这两者都有那个属性(LDIR_Attr与DIR_Attr),这个两个是不是都是赋值成?<br />2,我在实现短文件名的时候,我只要根据文件名然后获取它的目录项信息,再根据它的属性不等于ATTR_LONG_NAME来排除它不是长文件名,那对于长文件名我该怎么做呢?是先找出该文件的长目录项信息,还是找它相对应短目录项信息呢?<br />如果说的不清楚,请指出,顺便帮我分析下以上两个问题,谢谢大家了!
xplore 发表于 2008-11-27 02:18 | 显示全部楼层

自己去学习微软的fat32规范吧

规范上写得很清楚,一言两语说不清楚,所以估计没有人会回答你
 楼主| lijian910 发表于 2008-11-27 09:19 | 显示全部楼层

回复2楼

谢谢2楼的资料,明白不少,但还有个疑问,就是上面资料中说可以既可以用长文件名寻址,也可以用短文件名寻址这点有点不明白;<br />假如有个1234567890abcdef.txt文件,若想根据短文件名来寻址的话,我是不是要根据这个.txt文件生成一个短文件名,比如生成123456~1.TXT,然后用这个短文件名去找是否存在这个文件名?如果找到了,我还要去找出长目录项信息,用它的那个LDIR_Chksum来跟上面的短目录项比较是否匹配;<br />如果不匹配那是不是又要用.txt文件来生成另外一个短文件名,如123456~2.TXT,然后重复判断下去,这样的话我什么时候才是个尽头;<br />望指点,谢谢!
armecos 发表于 2008-11-27 09:58 | 显示全部楼层

是的,就是要这么麻烦,

不过,你可以用长文件名查找啊,比如增加一个GUI,显示长文件名,鼠标双击就打开。<br />另外,活人不能让尿憋死,你干嘛非要起相似的名字呢,你让每个文件名的前8个字节不同,就不会出现此问题了。
 楼主| lijian910 发表于 2008-11-27 10:41 | 显示全部楼层

哦,明白了短文件名寻址

看了你回复好象是说用长文件名寻址更方便,不是很明白,能具体说下个方法吗
armecos 发表于 2008-11-27 12:12 | 显示全部楼层

我没这么说过,

只是长文件名具有唯一性,短名容易冲突,要一个个试。<br /><br />《ecos增值包》里有长文件名的详细资料:<br />在RAMFS中实现长文件名<br />在ROMFS中实现长文件名<br />在FAT12/16/32上实现长文件名(for&nbsp;Win/for&nbsp;Linux)<br /><br />SMARTARM2200是经过认证的可以实现各种长文件名的硬件,配合《ecos增值包》进行学习最合适不过了。<br /><br />另外,提供Windows/Linux/VxWorks/ecos下文件系统整体解决方案咨询服务。
 楼主| lijian910 发表于 2008-11-27 13:09 | 显示全部楼层

是不是要交钱买跟培训啊?

是不是要交钱买跟培训啊?
deeploves 发表于 2008-11-27 15:25 | 显示全部楼层

你当人家吃饭不用花钱?

  
 楼主| lijian910 发表于 2008-12-2 14:42 | 显示全部楼层

8+3格式长文件名实现

问大家一个问题,我在8+3格式(FAT32)实现长文件名。比如1234567890.txt,我从这个文件名得出相对应的短目录项的name为123456~1.txt,结果在U盘里我发现我创建了一个文件名为123456~1的txt文件,并不是我想要的文件名是1234567890的txt文件。<br />是我理解错了还是在该种模式下,长文件名生成在U盘中本来就是用其相对应的短文件名来显示呢?
armecos 发表于 2008-12-2 18:22 | 显示全部楼层

一般用DOS命令行显示的是短文件名,

用文件管理器显示的是长文件名,长短文件名是等效的。<br />也许配置一下就能显示长文件名。
 楼主| lijian910 发表于 2008-12-2 21:15 | 显示全部楼层

应该怎么配置呢

应该怎么配置呢?能具体说下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部