找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8968|回复: 3
打印 上一主题 下一主题
收起左侧

FATFS文件系统中,删除文件夹!分享一个函数 FS_DeleteIntFile(TCHAR* path)

[复制链接]
跳转到指定楼层
楼主
ID:282249 发表于 2018-2-5 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了好多朋友用那个f_unlink()函数没法删除还有内容的文件夹,今天在网上找到一个不错的函数,所以拿来跟大家分享一下~废话不多说直接上函数的代码:

/* 删除文件夹内所有的文件和文件夹*/
FRESULT FS_DeleteIntFile(TCHAR* path)
{
UINT i, j;
FRESULT res;
DIR dir;
FILINFO fno;
#if _USE_LFN
fno.lfname = 0; /* Set null pointer because LFN is not needed */
#endif
res = f_opendir(&dir, path);
if (res == FR_OK)
{
for (i = 0; path[ i]; i++) ;
path[i++]='/';
for (;;)
{
res = f_readdir(&dir, &fno);
if (res != FR_OK || !fno.fname[0]) break;
if (fno.fname[0] == '.') continue;
j = 0;
do
path[i+j] = fno.fname[j];
while (fno.fname[j++]);
if (fno.fattrib & AM_DIR)
{
res = FS_DeleteIntFile(path);
if (res != FR_OK) break;
}
res = f_unlink(path);
if ((res != FR_OK) && (res != FR_DENIED)) break;
}
path[--i] = '\0';
}
return res;
}


/* 删除此文件夹及内部的文件及文件夹*/
FRESULT FS_DeleteFolderOrFile(TCHAR* path)
{
FRESULT res;

res = FS_DeleteIntFile(path);
if (res == FR_OK)
{
res = f_unlink(path);
}
else if (FR_NO_PATH == res)
{
res = f_unlink(path);
}
return res;
}
首先把这两个函数的定义放在ff.c当中,别忘了在ff.h中声明一下。然后直接调用就行啦
至于怎么用,不用我说了吧~

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:416203 发表于 2019-10-19 11:32 | 只看该作者
好东西啊
回复

使用道具 举报

板凳
ID:474093 发表于 2021-1-28 20:30 | 只看该作者
老兄麻烦问下这个程序我编译报错呢? _USE_LFN   fno.lfname  怎么定义的呢
回复

使用道具 举报

地板
ID:474093 发表于 2021-1-28 20:31 | 只看该作者
老兄这个程序我这编译报错呢  _USE_LFN   fno.lfname  怎么定义的呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表