打印

关于FAT32文件在windowXP无法打开的问题

[复制链接]
2249|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bicuspid|  楼主 | 2009-4-5 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我通过开发板往SD卡内写入了一个文本文件。我程序的做法是做样的:
1、在FAT1中寻找一空闲簇(00 00 00 00),记下簇号cluster_no
2、在cluster_no对应的簇写入一些文本数据,不超过一簇大小,同时结尾写上了0D  0A
3、在第2簇的根目录扇区中找到一个没用目录项(00开头),填入文件的信息:括文件名(WIC),扩展名(TXT),首簇号,大小(24字节),还有日期时间。
4、FAT1中这个cluster_no对应的簇号中填入0x0fffffff(因为数据不超过一簇),同时更新FAT2。
实验结果确实能往格式化为FAT32的SD卡中写入一个文件,在windowXP下,在这个卡的根目录下确实看到了这个文件,但是右键属性一看,这个文件大小为0字节,创建、修改等时间都是0。双击打开这个.txt文件显示没有东西。
我用winhex读这个卡上的内容,发现FAT区和文件的根目录项都按照上面填写正确,这个文件对应的簇有我写入的内容。
但为什么双击打开就是没内容?想了两天想不出所以然来,请高人指点一二,谢谢!

相关帖子

沙发
computer00| | 2009-4-5 17:52 | 只看该作者

1.可能是目录项数据错误;2. 短文件名应该全部用大写(包括

使用特权

评论回复
板凳
bicuspid|  楼主 | 2009-4-5 18:04 | 只看该作者

谢谢您的答复,但是

1、目录项数据应该没错,我按照一个在XP下创建的能打开的文件的目录项填这个WIL.TXT文件目录项(就是日期时间这几项一样)。
2、文件名已经大写了。
还有目录项的属性域我填0x20(归档)

使用特权

评论回复
地板
computer00| | 2009-4-5 22:04 | 只看该作者

FAT32还有长文件名目录项,是否搞错了?

你这个看上去应该是目录项不对引起的。

使用特权

评论回复
5
bicuspid|  楼主 | 2009-4-5 23:18 | 只看该作者

但是我用的是短文件名,不涉及到长目录项。

短目录项关键就是文件名扩展名,属性,首簇号,文件大小。这些我都检查了2遍,没有错。

使用特权

评论回复
6
computer00| | 2009-4-5 23:35 | 只看该作者

那就不清楚咯~~~~~

使用特权

评论回复
7
bicuspid|  楼主 | 2009-4-6 11:50 | 只看该作者

解决了

对不起!我粗心了,在winhex中看都的都是大写,以为都大写了。其实我的文件名在程序中有一个字母没大写。
用短文件名时,文件名在填写目录项的时候一定要大写;不足8字节时一定要用空格填充。
很感谢圈圈的热心帮助!

使用特权

评论回复
8
computer00| | 2009-4-6 12:45 | 只看该作者

恩,还好最后找出来了,不然可郁闷到老……

使用特权

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

本版积分规则

5

主题

16

帖子

0

粉丝