打印

FAT32或FAT16下的长文件名实现

[复制链接]
5482|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijian910|  楼主 | 2008-11-26 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在我实现了FAT32跟FAT16下的短文件名,但在实现长文件名时有些迷惑;
如下:暂时列出2个迷惑
1,创建一个文件名时,除了要建长目录项,也要建短目录项,这两者都有那个属性(LDIR_Attr与DIR_Attr),这个两个是不是都是赋值成?
2,我在实现短文件名的时候,我只要根据文件名然后获取它的目录项信息,再根据它的属性不等于ATTR_LONG_NAME来排除它不是长文件名,那对于长文件名我该怎么做呢?是先找出该文件的长目录项信息,还是找它相对应短目录项信息呢?
如果说的不清楚,请指出,顺便帮我分析下以上两个问题,谢谢大家了!

相关帖子

沙发
xplore| | 2008-11-27 02:18 | 只看该作者

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

规范上写得很清楚,一言两语说不清楚,所以估计没有人会回答你

使用特权

评论回复
板凳
lijian910|  楼主 | 2008-11-27 09:19 | 只看该作者

回复2楼

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

使用特权

评论回复
地板
armecos| | 2008-11-27 09:58 | 只看该作者

是的,就是要这么麻烦,

不过,你可以用长文件名查找啊,比如增加一个GUI,显示长文件名,鼠标双击就打开。
另外,活人不能让尿憋死,你干嘛非要起相似的名字呢,你让每个文件名的前8个字节不同,就不会出现此问题了。

使用特权

评论回复
5
lijian910|  楼主 | 2008-11-27 10:41 | 只看该作者

哦,明白了短文件名寻址

看了你回复好象是说用长文件名寻址更方便,不是很明白,能具体说下个方法吗

使用特权

评论回复
6
armecos| | 2008-11-27 12:12 | 只看该作者

我没这么说过,

只是长文件名具有唯一性,短名容易冲突,要一个个试。

《ecos增值包》里有长文件名的详细资料:
在RAMFS中实现长文件名
在ROMFS中实现长文件名
在FAT12/16/32上实现长文件名(for Win/for Linux)

SMARTARM2200是经过认证的可以实现各种长文件名的硬件,配合《ecos增值包》进行学习最合适不过了。

另外,提供Windows/Linux/VxWorks/ecos下文件系统整体解决方案咨询服务。

使用特权

评论回复
7
lijian910|  楼主 | 2008-11-27 13:09 | 只看该作者

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

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

使用特权

评论回复
8
deeploves| | 2008-11-27 15:25 | 只看该作者

你当人家吃饭不用花钱?

使用特权

评论回复
9
lijian910|  楼主 | 2008-12-2 14:42 | 只看该作者

8+3格式长文件名实现

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

使用特权

评论回复
10
armecos| | 2008-12-2 18:22 | 只看该作者

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

用文件管理器显示的是长文件名,长短文件名是等效的。
也许配置一下就能显示长文件名。

使用特权

评论回复
11
lijian910|  楼主 | 2008-12-2 21:15 | 只看该作者

应该怎么配置呢

应该怎么配置呢?能具体说下吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝