在 Ubuntu(Linux)下,opendir() 本身只是打开一个目录,它不会筛选文件,所以能不能“读取”隐藏文件,取决于你后面怎么遍历。
opendir() + readdir() 可以读取隐藏文件. 开头而被自动忽略opendir() 做什么DIR *dir = opendir("/some/path");
只是打开目录,不区分普通文件和隐藏文件。
readdir() 返回什么struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
在 Ubuntu 上,readdir() 会返回:
.bashrc、.config). 和 ..在 Linux 中:
. 开头的文件就是“隐藏文件”很多人“读不到隐藏文件”,是因为自己写了过滤:
if (name[0] == '.')
continue; // 手动跳过了隐藏文件
或者用了 ls 的思维:
ls 默认不显示隐藏文件ls -a 才会显示#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
if (entry->d_name[0] == '.')
continue;
opendir() ✅ 能访问包含隐藏文件的目录readdir() ✅ 能读到隐藏文件如果你是在 C / C++ / shell / Python 里用,我也可以给你对应示例。