插件窝 干货文章 readdir如何读取目录文件列表

readdir如何读取目录文件列表

目录 readdir entry DIR 772    来源:    2025-05-05

使用 readdir 读取目录文件列表

readdir 是用于读取目录内容的函数,在不同编程语言中有不同的实现方式。下面我将介绍几种常见语言中使用 readdir 的方法:

C 语言

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

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

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

    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

PHP

<?php
$dir = "./";  // 指定目录路径

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "文件名: $file\n";
        }
        closedir($dh);
    }
}
?>

Node.js

const fs = require('fs');

fs.readdir('.', (err, files) => {
    if (err) {
        console.error('无法读取目录:', err);
        return;
    }

    files.forEach(file => {
        console.log(file);
    });
});

// 或者使用同步版本
const files = fs.readdirSync('.');
files.forEach(file => console.log(file));

Python

import os

# 列出当前目录所有文件和子目录
for entry in os.listdir('.'):
    print(entry)

# 更详细的目录遍历
with os.scandir('.') as entries:
    for entry in entries:
        print(entry.name)

注意事项

  1. 大多数 readdir 实现会返回 . (当前目录) 和 .. (上级目录) 这两个特殊条目
  2. 需要处理可能的权限问题或目录不存在的情况
  3. 某些实现可能需要手动关闭目录句柄
  4. 对于大型目录,考虑使用异步或流式处理方式

根据你的具体需求选择合适的语言实现,并确保添加适当的错误处理逻辑。