#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