Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
来源:互联网 发布:赢顺云行情交易软件 编辑:程序博客网 时间:2024/06/05 18:33
今天需要测试一下OJ产生的数据,文件太多,所以需要通过文件递归遍历调用shell命令,所以网上找了递归访问的,比之前window下的程序更简单清爽。
借鉴: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
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转载)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Java自动读取文件夹下的所有文件(包括子文件夹)
- 标准c/c++获得某文件夹下所有文件名(包括子文件夹中的)
- 遍历文件夹 下的所有文件 ,包括子文件夹
- 删除指定文件夹下所有文件(包括子文件夹及子文件夹下的所有文件)
- C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
- C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
- c语言遍历某文件夹下的所有文件 包括子文件夹
- 读取文件夹下的子文件夹的所有文件名,并保存成以子文件命名的txt文件
- 【C++】读取文件夹下所有文件名
- cmd批处理命名:生成本文件夹包括子文件夹下的所有文件名列表
- code 提取文件夹下所有文件的名字(包括子文件夹)
- linux c 读取并处理文件夹下的所有文件
- 虚拟货币开发专题(什么是虚拟货币私钥,公钥和地址)
- Centos 6.5 安装jdk1.6
- 告别 Unity,Ubuntu 掌管者 Canonical 着手 IPO
- Material Design风格SearchView实现
- Centos 6.5 安装mysql
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- /*****/并查集
- Android Drawable之level-list使用简介
- 批量提取某一文件夹下的所有文件名
- 坚果Pro真机已确认外观设计!
- 重构二叉树,java实现,剑指offer原题
- 《An Introduction to Ray Tracing》—— 2.5 Ray/Quadric Intersection And Mapping
- EclipseLink学习(三)--- 一对多映射
- 关于srtuts1.2提交表单到actionform出现乱码的情况