绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
C语言如何递归读取文件夹下的所有文件?
2022-01-28 15:20:13

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

#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 = ;
 char tmp_name[1024]={};
 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 < )
  {
   printf("read stat fail\n");
   return -1;
  }
 
  if(S_ISDIR(sta.st_mode)) //如果为目录文件
  {
   if == strcmp("..",st->d_name) ||  == strcmp(".",st->d_name)) //忽略当前目录和上一层目录
    continue;
   else
   {
    read_dir_r(tmp_name);  //递归读取
   }
  }
  else //不为目录则打印文件路径名
  {
   printf("%s\n",tmp_name);
  }
 }
 closedir(dp);
 return ;
}
 
int main(int argc,char *argv[])
{
    read_dir_r("./test"); //打印当前test目录下所有的文件路径
    return ;
}

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

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

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

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


分享好友

分享这个小栈给你的朋友们,一起进步吧。

C语言编程开发
创建时间:2019-12-03 10:46:09
C语言C++知识内容传递,让编程变得更容易。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • jasonhsp
    栈主
  • gaokeke123
    嘉宾

小栈成员

查看更多
  • ?
  • 小尾巴鱼
  • karspb
  • nt1979
戳我,来吐槽~