当前位置:首页 > linux > 正文

linux读取当前目录下的文件

  • linux
  • 2024-05-04 03:54:02
  • 7328

方法 1:opendir() 和 readdir()
c
#include
int main() {
DIR dir;
struct dirent entry;
// 打开当前目录
dir = opendir(".");
// 循环读取目录项
while ((entry = readdir(dir)) != NULL) {
// 处理文件
printf("%s\n", entry->d_name);
}
// 关闭目录
closedir(dir);
return 0;
}
方法 2:glob()
c
#include
int main() {
glob_t g;
// 获取当前目录下所有文件的路径
glob("", GLOB_NOSORT, NULL, &g);
// 循环读取文件路径
for (int i = 0; i < g.gl_pathc; i++) {
// 处理文件
printf("%s\n", g.gl_pathv[i]);
}
// 释放 glob() 分配的内存
globfree(&g);
return 0;
}
方法 3:scandir()
c
#include
int main() {
struct dirent namelist;
int n;
// 扫描当前目录
n = scandir(".", &namelist, NULL, alphasort);
// 循环读取文件
for (int i = 0; i < n; i++) {
// 处理文件
printf("%s\n", namelist[i]->d_name);
}
// 释放 scandir() 分配的内存
for (int i = 0; i < n; i++) {
free(namelist[i]);
}
free(namelist);
return 0;
}
性能比较
opendir() 和 readdir():效率最高,但需要手动管理目录句柄。
glob():方便,但效率稍低,特别是处理大量文件时。
scandir():效率介于 opendir() 和 glob() 之间,不需要手动管理目录句柄。
注意事项
确保目录具有读取权限。
处理目录项时应考虑跨平台兼容性,因为不同系统可能使用不同的文件属性存储方式。
始终及时关闭打开的目录句柄。