Linux C 读取文件夹下所有文件(包括子文件夹)的文件名

来源:互联网 发布:cad手机绘图软件 编辑:程序博客网 时间:2024/05/20 06:07

本文:http://www.cnblogs.com/xudong-bupt/p/3504442.html

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)等。

 

下面程序,递归读取某文件夹及其子文件夹下所有文件名:

复制代码
 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <dirent.h> 5 #include <unistd.h> 6 int readFileList(char *basePath) 7 { 8     DIR *dir; 9     struct dirent *ptr;10     char base[1000];11 12     if ((dir=opendir(basePath)) == NULL)13     {14         perror("Open dir error...");15         exit(1);16     }17 18     while ((ptr=readdir(dir)) != NULL)19     {20         if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir21             continue;22         else if(ptr->d_type == 8)    ///file23             printf("d_name:%s/%s\n",basePath,ptr->d_name);24         else if(ptr->d_type == 10)    ///link file25             printf("d_name:%s/%s\n",basePath,ptr->d_name);26         else if(ptr->d_type == 4)    ///dir27         {28             memset(base,'\0',sizeof(base));29             strcpy(base,basePath);30             strcat(base,"/");31             strcat(base,ptr->d_name);32             readFileList(base);33         }34     }35     closedir(dir);36     return 1;37 }38 39 int main(void)40 {41     DIR *dir;42     char basePath[1000];43 44     ///get the current absoulte path45     memset(basePath,'\0',sizeof(basePath));46     getcwd(basePath, 999);47     printf("the current dir is : %s\n",basePath);48 49     ///get the file list50     memset(basePath,'\0',sizeof(basePath));51     strcpy(basePath,"./XL");52     readFileList(basePath);53     return 0;54 }
复制代码

执行输出 :


阅读全文
0 0
原创粉丝点击