码迷,mamicode.com
首页 > Web开发 > 详细

FATFS-f_deldir-删除文件夹(删除子文件夹及文件连同其本身)

时间:2015-08-20 10:30:39      阅读:614      评论:0      收藏:0      [点我收藏+]

标签:

转载请注明出处:http://blog.csdn.net/u011833609/article/details/47803551
//====================================================================================================
//函 数 名 : f_deldir
//函数功能 : 移除一个文件夹,包括其本身和其子文件夹,子文件
//输    入 : const TCHAR *path---指向要移除的空结尾字符串对象的指针
//输    出 : 无
//返 回 值 : FR_OK(0):           函数成功 
//           FR_NO_FILE:         无法找到文件或目录 
//           FR_NO_PATH:         无法找到路径 
//           FR_INVALID_NAME:    文件名非法 
//           FR_INVALID_DRIVE:   驱动器号非法 
//           FR_DENIED:          函数由于以下原因被拒绝: 
//               对象属性为只读;
//               目录下非空;
//               当前目录。
//           FR_NOT_READY:       磁盘驱动器无法工作,由于驱动器中没有媒体或其他原因 
//           FR_WRITE_PROTECTED: 媒体写保护 
//           FR_DISK_ERR:        函数失败由于磁盘运行的一个错误 
//           FR_INT_ERR:         函数失败由于一个错误的 FAT 结构或内部错误 
//           FR_NOT_ENABLED:     逻辑驱动器没有工作区 
//           FR_NO_FILESYSTEM:   驱动器上没有合法的 FAT 卷 
//           FR_LOCKED:          函数被拒由于文件共享机制(_FS_SHARE) 
//备    注 : f_deldir 函数用来移除一个文件夹及其子文件夹、子文件,但不能移除已经打开的对象。 
//====================================================================================================
FRESULT f_deldir(const TCHAR *path)
{
    FRESULT res;
    DIR   dir;     /* 文件夹对象 */ //36  bytes
    FILINFO fno;   /* 文件属性 */   //32  bytes
    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 == strcmp(fno.fname, "."))     continue;   //若读到的文件名为当前文件夹
        if(0 == strcmp(fno.fname, ".."))    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)    res = f_unlink(path);
    
    return res;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

FATFS-f_deldir-删除文件夹(删除子文件夹及文件连同其本身)

标签:

原文地址:http://blog.csdn.net/u011833609/article/details/47803551

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!