请教下,CH32F103读取U盘已有的长文件名
CH32F103C8T6,使用CH32F103UFI.lib。1.读取U盘里面现有的长文件名,通过CH103FileOpen枚举文件夹内的文件,可以得到长文件名文件的短文件名,也可以使用该短文件名来操作这个文件,就是不知道如何得到这个长文件名文件的长文件名?
2.如果有U盘目录下有TESTLONG-F.TXT, TESTLONG-W.TXT, TESTLONG-L.TXT多个前缀一样的长文件名文件,可以使用"/TESTLO*"来通配找到这几个文件,短文件名为“TESTLO~1.TXT”,"TESTLO~2.TXT”,"TESTLO~3.TXT”,那么如何区分哪个对哪个?
1.长文件名位于目录项的对应短文件明前位置如图所示:,可通过读取扇区的操作分析出短文件名对应的长文件名位置,读出对应的长文件名;
2.当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
(1)、取长文件名的前 6 个字符加上"~1"形成短文件名,扩展名不变。
(2)、如果已存在这个文件名,则符号"~"后的数字递增,直到 5。
(3)、如果文件名中"~"后面的数字达到 5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文
件名的剩余字母生成短文件名的后四个字母,然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复
的文件名)。
(4)、如果存在老 OS 或程序无法读取的字符,换以"_ 呀跑文件系统 长文件名目录项按倒叙方式安排,长文件名编码为unicode。 文件系统不支持长文件名称读取 张饕餮 发表于 2022-4-11 18:34
1.长文件名位于目录项的对应短文件明前位置如图所示:,可通过读取扇区的操作分析出短文件名对应的长文件名 ...
多谢老哥,我去试一下 确实是能读取出来,2个长文件名目录项,能拼接出“TESTLONG-L.txt”。WCH的USB还是第一次用,不是很熟练,感觉处理长文件名还是移植FATFS来的简单一点,这样搞还得去看FAT32数据结构。
CH376倒是有一个CH376GetLongName,CH32F103貌似没有类似函数,下次参照这个来移植下吧。
页:
[1]