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;      
}

你可能感兴趣的:(编辑器,文件系统)