C语言如何递归读取文件夹下的所有文件?

Posted 嵌入式大杂烩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何递归读取文件夹下的所有文件?相关的知识,希望对你有一定的参考价值。

项目开发过程中经常需要读取目录下所有文件,故总结此递归读取文件夹下所有文件的示例程序以作备忘。

#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
 
int read_dir_r(char *path)

 DIR *dp = NULL;
 struct dirent *st;
 struct stat sta;
 int ret = 0;
 char tmp_name[1024]=0;
 dp = opendir(path);
 if(dp == NULL)
 
  printf("open dir error!!\\n");
  return -1;
 
 while(1)
 
  st = readdir(dp);
  if(NULL == st) //读取完毕
  
   break;
  
  strcpy(tmp_name, path);
  if(path[strlen(path)-1] != '/') //判断路径名是否带/
   strcat(tmp_name,"/");
  strcat(tmp_name,st->d_name);  //新文件路径名
  ret = stat(tmp_name, &sta); //查看目录下文件属性
  if(ret < 0)
  
   printf("read stat fail\\n");
   return -1;
  
 
  if(S_ISDIR(sta.st_mode)) //如果为目录文件
  
   if( 0 == strcmp("..",st->d_name) || 0 == strcmp(".",st->d_name)) //忽略当前目录和上一层目录
    continue;
   else
   
    read_dir_r(tmp_name);  //递归读取
   
  
  else //不为目录则打印文件路径名
  
   printf("%s\\n",tmp_name);
  
 
 closedir(dp);
 return 0;

 
int main(int argc,char *argv[])

    read_dir_r("./test"); //打印当前test目录下所有的文件路径
    return 0;

创建几个文件夹及文件以作测试,结构如下所示:

程序执行结果:成功的打印出五个文件路径名。

原文链接:https://xiaoyege.blog.csdn.net/article/details/86683284

仅供大家学习参考与知识传播,版权归原作者所有,如有侵权,麻烦联系进行删除,感谢~

往期推荐:

分享一个有趣的库,让你学习C语言不会觉得那么枯燥

实用 | 一个高性能通信库的简单使用分享

实用工具 | LVGL GUI-Guider的使用分享

基于vs2019的lvgl模拟器使用

lvgl最新版本在STM32上的移植使用

实用 | 10分钟教你搭建一个嵌入式web服务器

嵌入式开发小记,实用小知识分享

分享一款嵌入式人必备绘图工具!

干货 | protobuf-c之嵌入式平台使用

干货 | 嵌入式必备技能之Git的使用

例说嵌入式实用知识之JSON数据

C语言、嵌入式中几个非常实用的宏技巧

一个小巧、开源的信号发生器,酷!

在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总。

点击阅读原文,查看更多分享。

以上是关于C语言如何递归读取文件夹下的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何用递归获取一个文件夹内的所有文件存放在一个文件数组中

递归读取目录文件下的所有文件

Linux Shell之递归读取指定目录下的所有文件

C# 如何读取一个文件夹下的多个文件内容

Java递归读取文件路径下所有文件名称并保存为Txt文档

php 遍历文件夹文件问题