关于FAT32文件在windowXP无法打开的问题
我通过开发板往SD卡内写入了一个文本文件。我程序的做法是做样的:<br />1、在FAT1中寻找一空闲簇(00 00 00 00),记下簇号cluster_no<br />2、在cluster_no对应的簇写入一些文本数据,不超过一簇大小,同时结尾写上了0D 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 />但为什么双击打开就是没内容?想了两天想不出所以然来,请高人指点一二,谢谢!1.可能是目录项数据错误;2. 短文件名应该全部用大写(包括
谢谢您的答复,但是
1、目录项数据应该没错,我按照一个在XP下创建的能打开的文件的目录项填这个WIL.TXT文件目录项(就是日期时间这几项一样)。<br />2、文件名已经大写了。<br />还有目录项的属性域我填0x20(归档)FAT32还有长文件名目录项,是否搞错了?
你这个看上去应该是目录项不对引起的。但是我用的是短文件名,不涉及到长目录项。
短目录项关键就是文件名扩展名,属性,首簇号,文件大小。这些我都检查了2遍,没有错。那就不清楚咯~~~~~
解决了
对不起!我粗心了,在winhex中看都的都是大写,以为都大写了。其实我的文件名在程序中有一个字母没大写。<br />用短文件名时,文件名在填写目录项的时候一定要大写;不足8字节时一定要用空格填充。<br />很感谢圈圈的热心帮助!恩,还好最后找出来了,不然可郁闷到老……
页:
[1]