FRESULT f_deldir(const TCHAR *path)
{
FRESULT res;
DIR dir;
FILINFO fno;
TCHAR file[_MAX_LFN + 2] = {0};
#if _USE_LFN
TCHAR lname[_MAX_LFN + 2] = {0};
#endif
#if _USE_LFN
fno.lfsize = _MAX_LFN;
fno.lfname = lname;
#endif
res = f_opendir(&dir, path);
while((res == FR_OK) && (FR_OK == f_readdir(&dir, &fno)))
{
if(0 == strlen(fno.fname)) break;
if(0 == strncmp(fno.fname, ".",1)) continue;
if(0 == strncmp(fno.fname, "..",1)) continue;
memset(file, 0, sizeof(file));
#if _USE_LFN
sprintf((char*)file, "%s/%s", path, (*fno.lfname) ? fno.lfname : fno.fname);
#else
sprintf((char*)file, "%s/%s", path, fno.fname);
#endif
if (fno.fattrib & AM_DIR)
{//文件夹 递归删除
res = f_deldir(file);
}
else
{//删除文件 但是这个的前提是 路径为文件夹
res = f_unlink(file);
}
}
//删除本身
if(res == FR_OK)
{
//printf("2\n");
res = f_unlink(path);
}
else if(FR_OK == f_stat(path,&fno))//添加 了直接删除文件的效果
{
//printf("1\n");
if(fno.fattrib & AM_ARC) // 判断路径是否是文件
res = f_unlink(path);
}
return res;
}
FATFS 删除文件 和 目录(同时)
最新推荐文章于 2024-07-09 16:49:27 发布