文件系统fatfs的f_readdir函数
时间: 2023-07-30 08:12:50 浏览: 1364
f_readdir函数是FatFs文件系统库提供的一个函数,用于读取指定目录下的文件列表。
函数原型如下:
```
FRESULT f_readdir (DIR* dp, FILINFO* fno)
```
其中,dp是一个指向DIR对象的指针,fno是一个指向FILINFO结构体的指针。
函数返回值为FRESULT类型,表示操作结果。
调用该函数后,fno结构体中会存储当前目录下第一个文件的信息,然后每次调用f_readdir函数,fno结构体中的信息会被更新为下一个文件的信息,直到读取完所有文件为止。
注意,在调用f_readdir函数前,必须先打开目录,可以使用f_opendir函数来打开目录。
另外,需要注意的是,f_readdir函数只能读取当前目录下的文件列表,如果要读取子目录下的文件,需要使用递归方式遍历子目录。
相关问题
FATFS 初学之 f_opendir/ f_readdir
FATFS 是一个用于嵌入式系统中的文件系统库,提供了对 FAT 文件系统的支持。它的 f_opendir 和 f_readdir 函数用于打开和读取目录。
f_opendir 函数用于打开一个目录,其函数原型如下:
```
FRESULT f_opendir (
DIR* dp, // 目录对象指针
const TCHAR* path // 目录路径
);
```
其中,dp 是一个指向 DIR 类型的目录对象指针,path 是一个指向以 null 结尾的目录路径字符串。函数返回值为 FRESULT 类型,指示函数的执行结果。
f_readdir 函数用于读取目录中的下一个文件或子目录,其函数原型如下:
```
FRESULT f_readdir (
DIR* dp, // 目录对象指针
FILINFO* fno // 文件信息结构体指针
);
```
其中,dp 是一个指向 DIR 类型的目录对象指针,fno 是一个指向 FILINFO 类型的文件信息结构体指针。函数返回值为 FRESULT 类型,指示函数的执行结果。
使用 f_opendir 函数打开目录后,可以使用 f_readdir 函数读取目录中的文件或子目录,直到读取完毕。例如,可以使用以下代码列出目录中的所有文件和子目录:
```c
FRESULT res;
DIR dir;
FILINFO fno;
char *path = "/";
res = f_opendir(&dir, path);
if (res == FR_OK) {
while (f_readdir(&dir, &fno) == FR_OK && fno.fname[0]) {
if (fno.fattrib & AM_DIR) {
printf("DIR %s\n", fno.fname);
} else {
printf("FILE %s\n", fno.fname);
}
}
f_closedir(&dir);
}
```
这段代码会打开根目录,并逐个读取目录中的文件和子目录,然后输出它们的名称和类型。注意,在使用 f_readdir 函数读取目录时,需要检查返回的文件名是否为空,以判断是否已经读取完毕。
阅读全文