FATFS 初学之 f_opendir/ f_readdir
时间: 2023-10-22 21:32:27 浏览: 45
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 函数读取目录时,需要检查返回的文件名是否为空,以判断是否已经读取完毕。