OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2503|回复: 4

文件系统中的文件遍历求助

[复制链接]

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-5-14
在线时间
14 小时
发表于 2016-11-3 09:02:56 | 显示全部楼层 |阅读模式
20金钱
代码如下
[mw_shl_code=c,true]void FATFS_File_Check(void)
{
  char * result1, *result2 , *result3 , *result4;
  char     lfn[70];
  FRESULT res;

  File_Status.File_Total = 0;//清零总数,重新读取
  finfo.lfname = lfn;          //为长文件分配空间
  finfo.lfsize = sizeof(lfn);  //分配的空间大小
  
  if(res != FR_OK)
  {
    res = FR_OK;
  }
  res = f_open(&fsrc , "1olo.wav" , FA_READ);//fr_ok    the file is opened.
  res = f_close(&fsrc);
  if(f_opendir(&dirs , "1:") == FR_OK) //打开根目录
  {
    while(f_readdir(&dirs , &finfo) == FR_OK)  //遍历文件
    {
      if(finfo.fattrib & AM_ARC)
      {
        if((finfo.lfname[0] == NULL) && (finfo.fname != NULL)) //当长文件为空时,短文件名非空时转换
        {
          finfo.lfname = finfo.fname;
        }
        
        if(!finfo.lfname[0])//文件名为空时退出
        {
          File_Status.File_Disp = 1;           //外部显示信息
          break;
        }
        
        //判断文件是不是音频文件
        result1 = strstr(finfo.lfname , ".mp3");
        result2 = strstr(finfo.lfname , ".mid");
        result3 = strstr(finfo.lfname , ".wav");
        result4 = strstr(finfo.lfname , ".wma");
        if((result1 != NULL) || (result2 != NULL) ||
           (result3 != NULL) || (result4 != NULL))
        {
          File_Status.File_Total++;
          File_Status.info[File_Status.File_Total].Name = finfo.lfname;//保存名字信息
          File_Status.info[File_Status.File_Total].Time = finfo.fsize; //保存文件大小
        }
      }
    }
  }
}[/mw_shl_code]
文件系统种存在两个文件 一个是record.txt 一个是 lololo.wav,但是文件系统只能够找到前面个文件。lololo.wav又能够被打开,但是不能被這个函数找到,感到很费解

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-5-14
在线时间
14 小时
 楼主| 发表于 2016-11-3 09:02:57 | 显示全部楼层
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-5-14
在线时间
14 小时
 楼主| 发表于 2016-11-3 09:09:32 | 显示全部楼层
单步调试,读取的的文件信息,第一个字符缺失,导致文件读取错误。

第一个文件读取没有问题,但是第二个第三个就会出现问题。(文件名的第0位缺失)
QQ截图20161103090749.png
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2016-11-3 16:20:42 | 显示全部楼层
会不会是把前一个文件名字符串的屁股读出来了
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-5-14
在线时间
14 小时
 楼主| 发表于 2016-11-4 11:41:15 | 显示全部楼层
shikihane 发表于 2016-11-3 16:20
会不会是把前一个文件名字符串的屁股读出来了

不是,指针那里出错了。短文件名赋值给长文件名那里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表