bicuspid 发表于 2009-4-5 17:01

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

我通过开发板往SD卡内写入了一个文本文件。我程序的做法是做样的:<br />1、在FAT1中寻找一空闲簇(00&nbsp;00&nbsp;00&nbsp;00),记下簇号cluster_no<br />2、在cluster_no对应的簇写入一些文本数据,不超过一簇大小,同时结尾写上了0D&nbsp;&nbsp;0A<br />3、在第2簇的根目录扇区中找到一个没用目录项(00开头),填入文件的信息:括文件名(WIC),扩展名(TXT),首簇号,大小(24字节),还有日期时间。<br />4、FAT1中这个cluster_no对应的簇号中填入0x0fffffff(因为数据不超过一簇),同时更新FAT2。<br />实验结果确实能往格式化为FAT32的SD卡中写入一个文件,在windowXP下,在这个卡的根目录下确实看到了这个文件,但是右键属性一看,这个文件大小为0字节,创建、修改等时间都是0。双击打开这个.txt文件显示没有东西。<br />我用winhex读这个卡上的内容,发现FAT区和文件的根目录项都按照上面填写正确,这个文件对应的簇有我写入的内容。<br />但为什么双击打开就是没内容?想了两天想不出所以然来,请高人指点一二,谢谢!

computer00 发表于 2009-4-5 17:52

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

bicuspid 发表于 2009-4-5 18:04

谢谢您的答复,但是

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

computer00 发表于 2009-4-5 22:04

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

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

bicuspid 发表于 2009-4-5 23:18

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

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

computer00 发表于 2009-4-5 23:35

那就不清楚咯~~~~~

bicuspid 发表于 2009-4-6 11:50

解决了

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

computer00 发表于 2009-4-6 12:45

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

页: [1]
查看完整版本: 关于FAT32文件在windowXP无法打开的问题