温馨提示×

readdir函数如何读取目录内容

小樊
57
2025-08-20 13:15:31
栏目: 编程语言

readdir 函数是用于读取目录内容的系统调用。它在 POSIX 标准中定义,通常在 C 编程语言中使用。通过 readdir,你可以获取一个目录中的文件和子目录的列表。

以下是如何使用 readdir 函数的基本步骤:

  1. 打开目录:使用 opendir 函数打开一个目录,返回一个 DIR* 类型的指针。

  2. 读取目录项:使用 readdir 函数从目录中读取条目。

  3. 关闭目录:使用 closedir 函数关闭目录。

下面是一个简单的示例代码,演示如何使用 readdir 来列出当前目录下的所有文件和子目录:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main() {
    DIR *dir;
    struct dirent *entry;

    // 打开当前目录
    dir = opendir(".");
    if (dir == NULL) {
        perror("opendir");
        return EXIT_FAILURE;
    }

    // 读取目录中的每个条目
    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    // 关闭目录
    closedir(dir);

    return EXIT_SUCCESS;
}

代码解释:

  • opendir("."):打开当前目录(. 表示当前目录),返回一个指向 DIR 结构的指针。
  • readdir(dir):从目录中读取下一个条目。如果成功,返回一个指向 dirent 结构的指针;如果到达目录末尾,返回 NULL
  • entry->d_namedirent 结构中的 d_name 字段包含目录项的名称。
  • closedir(dir):关闭目录。

注意事项:

  • readdir 返回的 dirent 结构中还包含其他有用的信息,比如文件类型、inode 号等。可以通过 entry->d_type 来判断文件类型。
  • 在处理完目录后,一定要调用 closedir 来释放资源。
  • 错误处理:在实际应用中,应对可能的错误进行更详细的处理。

0