STM32 FATfs遍历目录

#if 1
// 实现了三级目录遍历—dch

FRESULT scan_files(char *path)
{
FRESULT res; //定义结果对象
DIR dir; //定义目录对象
UINT i; //定义变量
static FILINFO fno; //定义静态文件信息结构对象
TCHAR Filepath[128] ={0};

TCHAR *DirPath;

res = f_opendir(&dir,path); //打开目录,返回状态 和 目录对象的指针

if(res == FR_OK)   //打开成功
{
	for(;;) //遍历
	{
		res = f_readdir(&dir, &fno); //读取目录,返回状态 和 文件信息的指针
		
		if(res != FR_OK || fno.fname[0] == 0)
		{
			printf("f_readdir end!\r\n");	
			break;        //若打开失败 或 到结尾,则退出
		}
		
		if(fno.fattrib & AM_DIR) //是目录
		{
			i = strlen(path); //获取原目录长度
			printf(" path:%s,i=%d,File:%s\r\n",path,i,fno.fname);
			strcpy(Filepath,path);
			if(strcmp("0:/",path)!=0)  // 区别根目录
				DirPath = strcat(Filepath,"/");
			DirPath = strcat(Filepath,fno.fname);
			printf(" DirPath:%s\r\n",DirPath);
			
			res = scan_files(DirPath); //将新目录进行递归调用

			if(res != FR_OK) 
				break; //打开失败则退出
			path[i] = 0;
		}
		else
		{
			if(strcmp("0:/",path)==0)
				printf(" File:%s%s\r\n",path,fno.fname); //是文件
			else
				printf(" File:%s/%s\r\n",path,fno.fname); //是文件
		}
	}
}
else
{
	printf(" f_opendir fail! res:%d",res); //打开失败
}
f_closedir(&dir); //关闭目录

printf(" f_closedir end!\r\n");

return res; //返回状态

}

#endif

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值