请问 UFX库文件 操作的文件名只能是大写,不能小写,也不能用数字空格等特殊字符吗?

加了其他字符都返回找不到文件!如果要使用其他字符需要怎么修改?image.pngimage.png

默认情况下文件须符合DOS命名规则:即“8个或以下字符大写字母和数字组合的文件名”.“3个或以下字符大写字母和数字组合”

例如:

ABCD1234.ABC

12345678.123

1111QAZD.1A2

1A2B3C.4D

1.A

..........




就是只支持短文件名嘛。。


长文件名的实现可以借鉴CH32F103的示例程序:http://www.wch.cn/downloads/CH32F103EVT_ZIP.html

其中HOST_Udisk下的EXAM13实现了对长文件名的操作。

可以留下邮箱,移植完后发送给你。


邮件请发 个人信息保护,已隐藏 谢谢!


邮件已发


请问这个生成长文件名后,把u盘插到电脑上是不是看到的还是短文件名?

我这里没有103的板子不能验证,你能讲一下他的原理吗?



CH559实现长文件名示例程序:

icon_rar.gifCH559Udisk_longfilename.zip



收到了,谢谢,验证可行,不过能不能再麻烦你一下,把读写文件都移植一下?


文件读写和长文件名功能无关,实际文件操作对象都是短文件名,长文件名只是一个“属性”。

直接参考CH559EVT下EXAM1

image.png


U盘里的文件是我在电脑上建立的,然后再挂到559上,提示没找到文件image.pngimage.png

image.png


长文件名只是属性,通俗讲就是给你屏幕上看着好辨认一点哪个是哪个。

提供的文件系统实际操作对象始终是短文件名。但电脑创建文件时短文件名不可见,且要操作的对象就是短文件名。

所以U盘接入MCU后需要枚举出所有文件(CH559EVT-EXAM11),尝试获取每个文件的长文件名,通过对长文件名进行比对,判断是否为需要的文件。

或者根据通用规则去检索文件:

image.png


我以为是你的lib里面自动去比对的,还要在外面枚举和比对啊。。。


请再帮忙指点一下,确实没想通。。1651822844(1).jpgimage.png


想要读写电脑上创建的c.c文件,举例如下:


执行函数枚举对应目录下所有文件,能够获取到每个文件短文件名:A.A、B.B、C.C、D.D.............等

执行函数对短文件名A.A获取其长文件名,得到长文件名a.a;

执行函数对短文件名B.B获取其长文件名,得到长文件名b.b;

执行函数对短文件名C.C获取其长文件名,得到长文件名c.c;

执行函数对短文件名D.D获取其长文件名,得到长文件名d.d;


其中c.c是在电脑上创建的长文件名文件,可知该文件的短文件名即是C.C,后续文件读写操作都针对短文件名C.C展开。


这里有点疑问,这是什么image.png


只有登录才能回复,可以选择微信账号登录