readdir
是一个在 Linux 系统中用于读取目录内容的函数。它是 POSIX 标准的一部分,因此在大多数 Unix-like 系统上都可以使用。readdir
函数通常与 opendir
和 closedir
函数一起使用,以实现对目录的遍历。
以下是 readdir
函数的基本工作原理:
opendir
函数打开一个目录。这将返回一个指向 DIR
结构的指针,该结构表示已打开的目录流。DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
// 处理错误
}
readdir
函数从目录流中读取一个目录项。每次调用 readdir
时,它都会返回一个指向 dirent
结构的指针,该结构包含有关目录项的信息,如名称、inode 号等。struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
// 处理目录项
}
readdir
返回 NULL
时,表示已到达目录的末尾。此时,应使用 closedir
函数关闭目录流。closedir(dir);
以下是一个简单的示例,展示了如何使用 readdir
函数列出目录中的所有文件和子目录:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
int main() {
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
请注意,这个示例没有处理隐藏文件(以点开头的文件),并且没有对错误进行详细处理。在实际应用中,您可能需要根据需求进行相应的调整。