Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
2014-01-04 13:15
453 查看
本文:/article/4813948.html
Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:
其中d_type表明该文件的类型:文件(8)、目录(4)、链接文件(10)等。
下面程序,递归读取某文件夹及其子文件夹下所有文件名:
执行输出 :
Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:
#include <dirent.h> struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_name 文件名长 */ unsigned char d_type; /* the type of d_name 文件类型 */ char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */ }
其中d_type表明该文件的类型:文件(8)、目录(4)、链接文件(10)等。
下面程序,递归读取某文件夹及其子文件夹下所有文件名:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <unistd.h> int readFileList(char *basePath) { DIR *dir; struct dirent *ptr; char base[1000]; if ((dir=opendir(basePath)) == NULL) { perror("Open dir error..."); exit(1); } while ((ptr=readdir(dir)) != NULL) { if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir continue; else if(ptr->d_type == 8) ///file printf("d_name:%s/%s\n",basePath,ptr->d_name); else if(ptr->d_type == 10) ///link file printf("d_name:%s/%s\n",basePath,ptr->d_name); else if(ptr->d_type == 4) ///dir { memset(base,'\0',sizeof(base)); strcpy(base,basePath); strcat(base,"/"); strcat(base,ptr->d_name); readFileList(base); } } closedir(dir); return 1; } int main(void) { DIR *dir; char basePath[1000]; ///get the current absoulte path memset(basePath,'\0',sizeof(basePath)); getcwd(basePath, 999); printf("the current dir is : %s\n",basePath); ///get the file list memset(basePath,'\0',sizeof(basePath)); strcpy(basePath,"./XL"); readFileList(basePath); return 0; }
执行输出 :
相关文章推荐
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转载)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- java读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Java实现读取文件夹下(包括子目录)所有文件的文件名
- Java自动读取文件夹下的所有文件(包括子文件夹)
- Java实现读取文件夹下(包括子目录)所有文件的文件名
- c#遍历一个文件夹下的所有文件包括子文件夹
- 标准c/c++获得某文件夹下所有文件名(包括子文件夹中的)
- c++读取某文件夹下的所有文件并查找.txt类型文件名
- 读取文件夹所有文件并保存文件名至指定文件
- C# 遍历文件夹下所有子文件夹中的文件,得到文件名
- 获取某某文件夹(包括子文件夹)下所有指定类型的文件
- C#如何遍历一个文件夹下面所有的文件、包括子文件夹里面的文件?
- 读取文件夹中文件所有文件名
- cmd批处理命名:生成本文件夹包括子文件夹下的所有文件名列表