这是一段对正点原子的代码修改的遍历函数,基于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;
}