【FATFS】f_readdir函数详细解析

FATFS f_readdir函数详细解析 

  f_readdir 是 FatFs 文件系统库中用于读取目录条目的函数,它的作用是从一个打开的目录中逐个读取文件或子目录的条目信息。通过这个函数,可以遍历目录中的所有文件和子目录,通常用于列出目录内容。

FRESULT f_readdir (
	DIR* dp,            /* 指向打开的目录对象的指针 */
	FILINFO* fno        /* 指向返回文件信息的指针 */
)
{
    FRESULT res;                // 存储操作结果的变量
    FATFS *fs;                  // 指向文件系统对象的指针
    DEF_NAMBUF                  // 定义用于名称处理的缓冲区(宏)

    res = validate(&dp->obj, &fs);   // 验证目录对象的有效性,并获取文件系统指针
    if (res == FR_OK) {              // 如果验证成功
        if (!fno) {                  // 如果没有提供 FILINFO 结构(fno 为 NULL)
            res = dir_sdi(dp, 0);    // 重置目录索引(从头开始读取)
        } else {                     // 如果提供了 fno
            INIT_NAMBUF(fs);          // 初始化名称缓冲区(用于文件名处理)
            res = DIR_READ_FILE(dp);  // 尝试读取文件或目录项
            if (res == FR_NO_FILE)    // 如果到达目录末尾(没有更多文件)
                res = FR_OK;          // 视为有效操作(不是错误)
            if (res == FR_OK) {       // 如果找到有效条目
                get_fileinfo(dp, fno);    // 获取当前目录项的详细信息并存储在 fno 中
                res = dir_next(dp, 0);    // 移动到下一个目录条目
                if (res == FR_NO_FILE)    // 如果到达目录末尾
                    res = FR_OK;          // 视为有效操作(不是错误)
            }
            FREE_NAMBUF();            // 释放名称缓冲区(清理资源)
        }
    }
    LEAVE_FF(fs, res);               // 宏,解锁并以操作结果离开文件系统
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值