在 Linux 平台上,可以使用 opendir()
、readdir()
和 closedir()
函数来遍历文件目录下的文件。具体步骤如下:
-
使用
opendir()
函数打开要遍历的目录,该函数返回一个指向DIR
类型的指针,表示打开的目录流。其原型如下:DIR *opendir(const char *name);
其中,
name
参数是要打开的目录名,可以是绝对路径或相对路径。如果打开成功,返回一个指向DIR
类型的指针,否则返回NULL
。 -
使用
readdir()
函数读取目录中的文件,该函数返回一个指向dirent
类型的指针,表示读取到的目录项。其原型如下:struct dirent *readdir(DIR *dirp);
其中,
dirp
参数是opendir()
函数返回的目录流指针。如果读取成功,返回一个指向dirent
类型的指针,否则返回NULL
。 -
循环调用
readdir()
函数,直到读取到所有的目录项。每次读取到一个目录项后,可以使用d_name
字段获取文件名,使用d_type
字段获取文件类型(例如,DT_REG
表示普通文件,DT_DIR
表示目录)等信息。 -
使用
closedir()
函数关闭目录流,释放资源。其原型如下:int closedir(DIR *dirp);
其中,
dirp
参数是要关闭的目录流指针。如果关闭成功,返回 0,否则返回 -1。
下面是一个简单的 C 语言例子,演示如何遍历目录下的文件:
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (!dir) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
在上面的例子中,首先使用 opendir()
函数打开当前目录,然后循环调用 readdir()
函数,读取目录中的文件,最后使用 closedir()
函数关闭目录流。需要注意的是,这里使用了 perror()
函数来输出错误信息,以便于调试。