U盘批量读取文件名问题,为什么第一次可以看到文件名第二次为空?

可能性一:那是你的U盘中毒了!你现在,打开“我的电脑”在"工具"、‘文件夹”选项的“查看”中,去掉“隐藏受保护的操作系统文件”前的钩。这样你再接入U盘,就可看到文件夹了。不过你还得将U盘中的文件夹的属性更改为存档,取消隐藏。注意,在U盘中不要建立文件夹,才是防毒的根本要求。
可能性二:可能就是买到了山寨U盘,也就是通常所说的扩容盘。扩容盘,只要U盘中所装的文件空间大于实际空间,就会出现这种情况。如果是就只有量产恢复U盘的实际容量了,而U盘的文件,由于拷在了实际容量以外,是没有办法恢复的。查看: 9944|回复: 9
请教一下FATFS读取U盘支持中文长文件名的问题
主题帖子精华
中级会员, 积分 283, 距离下一级还需 217 积分
在线时间0 小时
&&&&& & 我现在调一个U盘读取系统,但是目前只能支持短文件名,英文。
&&&&& & 可以把一个指定的TXT文件里的内容读出来;并通过串口显示出来。
&&&&& & 网上的资料大部分是移植在SD卡上的,他们把字库什么的放在SD卡上,
&&&&&&&&我也不是不可以把字库放在STM32上,因为STM32F4毕竟有1M的内部FLASH
&&&&& & 除了在fatfs文件夹下的ffconf.h里的 要修改这两项,并添加相应的option文件外,请教高手还有其他方面要注意的。
&&&&&&&&#define _CODE_PAGE 936
&&&&& &&#define _USE_LFN 3 /* 0 to 3&
&&&&& & 请大致说明一下思路!!!谢谢!!!
主题帖子精华
金钱124561
在线时间1046 小时
回复【楼主位】yongyooh:
---------------------------------
长文件名支持,主要是FATFS的设置了.
支持CC936,添加cc936.c,并在ffconf.h进行配置.
你定义_USE_LFN为3,说明用到动态内存分配了,你实现了么?
要实现这两个函数:
//动态分配内存
void&*ff_memalloc&(UINT&size)
return&(void*)mymalloc(SRAMIN,size);
}
//释放内存
void&ff_memfree&(void*&mf)
myfree(SRAMIN,mf);
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 283, 距离下一级还需 217 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
&&&&&&原子哥,我移植的是FatFs0.9a,改了上面两个宏定义后,添加进入cc936.c和syscall.c就编译没有错误了。
&&&&&&官方的原始文件syscall.c&里的相关代码如下:
#if&_USE_LFN&==&3 /*&LFN&with&a&working&buffer&on&the&heap&*/
/*------------------------------------------------------------------------*/
/*&Allocate&a&memory&block&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*------------------------------------------------------------------------*/
/*&If&a&NULL&is&returned,&the&file&function&fails&with&FR_NOT_ENOUGH_CORE.
*/
void*&ff_memalloc&( /*&Returns&pointer&to&the&allocated&memory&block&*/
/*&Number&of&bytes&to&allocate&*/
)
{
return&malloc(size);
}
/*------------------------------------------------------------------------*/
/*&Free&a&memory&block&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*------------------------------------------------------------------------*/
void&ff_memfree(
void*&mblock /*&nbspointer&to&the&memory&block&to&free&*/
)
{
free(mblock);
}
&&&&&&您的意思是我要改写这两个函数吗?
主题帖子精华
中级会员, 积分 283, 距离下一级还需 217 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
&&&&&&这两个动态内存相关的函数,我看到原子哥是自己写的。
&&&&&&不是官方的这两个函数也没有出错呀。貌似它默认调用的是#include &stdlib.h& &/*&ANSI&memory&controls&*/
&&&&&&这两个函数return&malloc(size);&free(mblock); 在KEIL4.70里貌似也没有报错啊!
& & & 还有,我设置的heap的大小为0x200
9bbd9ed9cdc12.png (0 Bytes, 下载次数: 0)
22:54 上传
主题帖子精华
金钱124561
在线时间1046 小时
回复【4楼】yongyooh:
---------------------------------
这两个函数我不知道怎么用哦,呵呵,没成功过.
你可以自己先写个小代码测试下malloc和free,有效没有.
malloc如果分配成功,那么可以返回你一个内存地址,如果失败,那就是NULL了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 283, 距离下一级还需 217 积分
在线时间0 小时
回复【5楼】正点原子:
---------------------------------
我用的usart3.printf&("%x&\n",malloc(200));&把结果打印出来。
&&&&&&&&串口输出的结果是:&&&&&
因为程序是循环执行的,所以我按一下按键后,又会执行这句话:
后来显示的&&&&&&&&&&&&&&&&&&&&&&&&&&
再后来显示的都是&&0&&
&&&&&&&&&&&&&&&&&&&&&&&&&0
&&&&&&&&&&&&&&&&&&&&&&&&&0
可能是我分配的内存没有释放的关系吧。
主题帖子精华
金钱124561
在线时间1046 小时
回复【6楼】yongyooh:
---------------------------------
说明分配成功了哦,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 283, 距离下一级还需 217 积分
在线时间0 小时
回复【7楼】正点原子:
---------------------------------
&&&&&对啊。我一直参考你的FATFS实验的代码的,做到这里串口调通了,内存管理也没问题,下一步该怎么走呢?!
主题帖子精华
金钱124561
在线时间1046 小时
回复【8楼】yongyooh:
---------------------------------
仿真,跟踪,看看问题出在哪里.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 275, 距离下一级还需 225 积分
在线时间0 小时
回复【8楼】yongyooh:
---------------------------------
请问,想使用FATFS文件系统读写U盘,需要修改哪里???
Powered by手机签到经验翻倍!快来扫一扫!
我的U盘怎么了,文件拷贝进去就被损坏了!
10480浏览 / 25回复
前几天,别人给了我一个8G的U盘,小鬼子东芝的,看样子有点年纪,说里面总是有病毒,格了N次还有,因为相片放到里面就打不开了。
我拿到手后,就用HD检测。没问题,没有坏道什么的,而且读取速度差不多30M,不算慢。格式化后,我拷了几张图片到里面,就是WINDOWS春夏秋冬那几张图片,拨插之后也没损坏,可以读。
后来拿回来一直没用它,昨天给新员工培训的时候,我一时大意把全部资料放在U盘里,准备使用,待把、本本、音响全调好,各就各位了,打开WORD和POWERPIONT,全是乱码,文件也无法打开,急得我满头大汗,幸好一同事有别的U盘,重新拷了一份救急。
后来把U盘插到现在用的这台上,结果还是一样的,但那几张图片能打开,其它文件全部损坏,要么乱码,要么无法打开,要么格式错误。
我就不明白了,过软件测试过,没有坏道或者损坏,却把我的绝大部分文件损坏。如果说是盘坏了,为什么只损坏一部分?
求助,SOS!
对&楼主&qigo&说:=========================这种情况正常的
人死了,毛发还能继续长呢
就U盘来说 30M是不是太快了点?
对&第2楼&lhfhai&说:=========================这句话是正话还是反话,
但我用HD测的是读取速度,差不多30M。
对&第2楼&lhfhai&说:=========================30M正常的啊
当然,主控芯片肯定不次
我用的是海盗船,速度也这样
但是听说东芝的这个持续不是太好
你的是那种一体的,中间有个安全套的吧
口误啊,安全带,中间有个安全带形式连着盖子的那种吧
对&第1楼&骏以&说:=========================你的意思是坏了么?坏了还能拷文件进去?而且拷的春夏秋冬四张图片又没坏的。
U盘就是你说的那种一体式的。
对&第5楼&qigo&说:=========================格式化一下就成了
格不了就是坏了
可以负责任的告诉楼主,您老用的是扩容盘,含义就是本身没有那么大的容量,用软件扩容到标称容量。我以前买过一个16g扩容盘,是4g盘扩的。估计你的8g盘也就是2g盘扩展的。
低格看看能不能救救...
对&第7楼&gudongmail&说:=========================何以断定是扩容盘呢?
目前存的东西还不多,现盘放在家里,晚上拿个大文件试一下就知道了,正好有部7.14G的电影。
刚刚在百度上看到一位网友,发了一样的问题,结果他自己的解决方法是“我把U盘那个盒子拆就`就不出现损坏数据的现象了,呵呵”。
太神奇了,晚上回去试试。
看过太多作假的u盘了。扩容。
对&第8楼&henge&说:=========================你指的是“控制面板、管理工具、计算机管理、存储、磁盘管理、初始化磁盘”吧?
回去试一下,原来格式化都是直接右键格的,没考虑这么多。
对&第10楼&fhxu040508&说:=========================现在关键问题是不是扩容,关键是它老损坏我的文件。
如果能搞好,就算它只有1-2G都无所谓了,能装东西就行了。
请问有何良策?
对&第7楼&gudongmail&说:=========================这个是很有可能的
买U盘一定有条件的带上笔记本测下最保险
我就见过一回
对&楼主&qigo&说:=========================7楼可能是正解
你那些文件加一起多大?你一点一点的往里放看看能不能打开。
再有可能就是格完了还有的nb病毒
对&第12楼&qigo&说:=========================如果是扩容的,就是山寨的假的
只能量产了
当然,我建议直接扔垃圾堆里去
我也在奇怪 那么旧的U盘有8G那么大的吗&&估计是扩容了
http://bbs.mydigit.cn/read.php?tid=114765
这里有人用量产工具修复过 你可以参考一下
对&第14楼&htmlbox&说:=========================昨天拷的文件都不大,最大的也有一百多兆,小的只有几十KB。
一个个拷贝,还没试过,到时候试一下。
格式化就等于数据清零,删掉存储器内的所有数据,并将存储器恢复到初始状态,怎么可能还会有病毒?
对&第12楼&qigo&说:=========================这样的扩容u盘就是这样,直接打开能看到标题,内容没有拷进去自然就是损坏文件了。其实就是只有一个标题而已。我前一阵子就看到某人收了一个16g的索尼,我一看就说是假的,你百度看看u盘测试工具下载查一下就知道了。他的才4g而已。
对&楼主&qigo&说:=========================扩容盘?颗粒损坏?
扩容盘的坏处就是你不知道拷贝进去的东西那些是拷贝在扩容的虚假盘上。用u盘软件恢复它的正常容量,就可以正常使用了。
支持键盘翻页 ( 左右 )&
用户名/注册邮箱/注册手机号
其他第三方号登录U盘无法删除文件,无法读源文件或磁盘,文件夹乱码无法等问题
我的图书馆
U盘无法删除文件,无法读源文件或磁盘,文件夹乱码无法等问题
U盘无法删除文件,无法读源文件或磁盘,文件夹乱码无法等问题 双击自动滚屏 文章来源:厦门讯维电脑维护网 & 发布者:xmpcw & 发布时间: 12:43:57 & 阅读:<FONT color=#ff次
广告位招租 厦门电脑维护 8301601
U盘文件夹名称变为类似如下情形:佞愳亠?仠或者@?等等不一,还不能删除,删除时提示:无法删除文件,无法读源文件或磁盘。注意看乱码文件大都特别大,甚至几十G都有。
出现这种问题的原因通常是因为不正常的插拔等情况造成的,导致U盘的文件分配表错乱了
建议:此时运行chkdsk 盘符: /f 可以检查出一些错误。当有提示修改文件夹为文件名时,输入Y选择是。此时一般问题就会解决了。
如果还有问题,将一些重要的文件能保存下来就尽量保存下来,然后对U盘进行格式化,或者进行低级格式化,再把重要文件COPY回去~
其他解决方案:
1.在问题U盘图标上点右键选择"属性"——"工具"——点“差错"下的"开始检查"结束后问题即解决.如果不行,请继续往下尝试。
2. 尝试为文件重命名,如果可以重命名的话。运行cmd 打开任务管理器,结束explorer进程,切换到cmd命令提示符状态下输入“Del 文件名”后就可以删除文件了,这种方法只适用于可以重命名的文件。在进行操作时先关闭其他一切不相关的程序。
3. 如果重命名文件时系统提示“拒绝访问”,那么在cmd运行模式下运行“chkdsk 盘符: /f”命令检查磁盘错误并修复。
如果出现找到磁盘错误,一般的错误都是可以修复的,在修复完成后就可以删除乱码文件了。
注意:有时,由于乱码文件所在分区为系统区,系统会提示“另一个进程正在调用该卷,是否希望下次开机时检查该卷?”我建议用这样的方法运行chkdsk命令,使用Windows安装盘引导系统,在选择新安装windows界面时,按“R”修复已有系统,进入命令提示符状态,在这里运行“chkdsk /f”命令。我测试过,这样运行的效果要比在Windows下的cmd模式中好很多。再运行“fixmbr”命令修复分区表。也可以修复系统其他的问题。
4.如果进行完上一步仍然无法删除乱码文件,可以使用我们最常用的WinRAR压缩工具来删除,具体的方法是压缩乱码文件并选中“压缩后删除源文件”选项。这样,一般的乱码文件就可以删除了。
5.但是如果文件的磁盘文件索引块已经被破坏,那WinRAR也是没有办法的,这时候就要借用Ghost这个强大的工具了。先把有乱码文件的分区做成镜像文件,再使用Ghost explorer浏览镜像文件,找到乱码文件并删除,再把镜像文件恢复到源分区。这个方法一般可以解决绝大数乱码文件名无法删除的问题。
U盘文件的乱码解决方案及相关数据恢复
U盘,Mp3,Mp4,SD卡都可能会产生一些乱码文件或者乱码文件夹,这可能是由于不正确的使用移动设备引起的,比如在U盘还在读写
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 java 读取文件名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信