Fat32递归遍历文件夹下的所有文件

这是一段对正点原子的代码修改的遍历函数,基于Fat32文件系统,可以遍历出某一个文件夹下面的所有文件,包括子文件夹下的文件。

u8 scan_files(u8 * path)
{
    FRESULT res;
    DIR dir;
    int i;  
    char *fn; 
    FILINFO fileinfo;

    fileinfo.lfsize = _MAX_LFN * 2 + 1;
    fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);

    res = f_opendir(&dir,(const TCHAR*)path); //

    if (res == FR_OK) 
     {  
        printf("\r\n"); 
        while(1)
        {
            res = f_readdir(&dir, &fileinfo);                   //读下一个项目
            if (res != FR_OK || fileinfo.fname[0] == 0) break;  
            if (fileinfo.fname[0] == '.') continue;             

#if _USE_LFN
            fn = *fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
#else                              
            fn = fileinfo.fname;
#endif                                           
            i = strlen((const TCHAR*)path);
            if (fileinfo.fattrib & AM_DIR) {
               sprintf(&path[i], "/%s", fn);                
               res = scan_files(path);
               if (res != FR_OK) break;
               path[i] = '\0';
           } else {
               printf("%s/%s\r\n", path, fn);
           }        
        } 
        f_closedir(&dir);
    }     
    myfree(SRAMIN,fileinfotemp.lfname);
 return res;      
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值