当前位置:   article > 正文

【文件IO】遍历指定目录下的所有文件_linux遍历文件夹所有文件内容

linux遍历文件夹所有文件内容

目录

一、访问目录相关函数

1、打开/访问目录 (opendir / fdopendir)

2、读取目录内容 (readdir)

3、关闭目录 (closedir)

二、遍历指定目录下的所有文件


一、访问目录相关函数

1、打开/访问目录 (opendir / fdopendir)

opendir / fdopendir 函数的作用是访问指定路径的目录,函数声明如下:

(1) opendir

opendir 函数是通过用户提供的目录路径来访问目录,参数是目录路径,返回值是目录指针 DIR*,是一个目录结构体,存放了目录的相关信息,类似于之前文件操作里的 FILE*,用户可以通过这个目录指针来访问目录。

(2) fdopendir

和 opendir 函数的作用一样,不一样的地方在于,fdopendir 函数的参数是文件描述符(需搭配open函数来使用),Linux下一切皆文件,目录也可以看作是一个文件,也可以使用open函数来获取其对应的文件描述符。

2、读取目录内容 (readdir)

readdir 函数的作用是读取目录流中的内容。函数声明如下:

参数:opendir / fdopendir 返回的目录指针

返回值:失败返回NULL,成功返回一个包含目录信息的结构体,关于该结构体的定义如下,需要重点关注的是 最后一个结构体成员 d_name

注意:和文件指针一样,每调用一次 readdir, 目录指针 DIR 就会指向当前目录中的下一个目录或者普通文件,当到达目录尾会返回NULL。

3、关闭目录 (closedir)

closedir 的作用是关闭一个打开的目录,参数就是打开目录文件时返回的目录指针。成功返回 0,失败返回 -1。

二、遍历指定目录下的所有文件

遍历目录的步骤主要有两步:

  1. 使用 opendir 获取到目录指针
  2. 通过目录指针同时搭配readdir函数,只要返回结果不为NULL,那就继续遍历,直到遍历目录下的每一个文件 。
  1. #include <sys/types.h>
  2. #include <dirent.h>
  3. #include <cstring>
  4. int main(int argc, char** argv)
  5. {
  6. DIR* dir = opendir("/home/linux/Templates"); // 打开一个目录
  7. if (dir == NULL)
  8. {
  9. perror("opendir");
  10. return -1;
  11. }
  12. struct dirent* dnt;
  13. while((dnt = readdir(dir))!=NULL) // 只要返回结果不为NULL,就一直遍历
  14. {
  15. // 滤除 . 和 ..
  16. if (!strcmp(".", dnt->d_name) || !strcmp("..", dnt->d_name))
  17. {
  18. continue;
  19. }
  20. printf("%s\n",dnt->d_name);
  21. }
  22. closedir(dir);
  23. return 0;
  24. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/556460
推荐阅读
相关标签
  

闽ICP备14008679号