Linux C  下面读取文件夹要用到结构体struct dirent,在头#include 中,如下:

67d0865f17d9be527254bf8a8ff6c5b4.gif

#include

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字符 */

}

67d0865f17d9be527254bf8a8ff6c5b4.gif

其中d_type表明该文件的类型:文件(8)、目录(4)、链接文件(10)等。

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

67d0865f17d9be527254bf8a8ff6c5b4.gif

1 #include

2 #include

3 #include

4 #include

5 #include

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 dir

21 continue;

22 else if(ptr->d_type == 8) ///file

23 printf("d_name:%s/%s\n",basePath,ptr->d_name);

24 else if(ptr->d_type == 10) ///link file

25 printf("d_name:%s/%s\n",basePath,ptr->d_name);

26 else if(ptr->d_type == 4) ///dir

27 {

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 path

45 memset(basePath,'\0',sizeof(basePath));

46 getcwd(basePath, 999);

47 printf("the current dir is : %s\n",basePath);

48

49 ///get the file list

50 memset(basePath,'\0',sizeof(basePath));

51 strcpy(basePath,"./XL");

52 readFileList(basePath);

53 return 0;

54 }

67d0865f17d9be527254bf8a8ff6c5b4.gif

执行输出 :

5d490abedbce82fae87539bfd20038ee.png

FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里 有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Goog ...

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就 ...

python 小练习之删除文件夹下的所有文件,包括子文件夹中的文件

先屡一下思路 一步步怎么实现 1  要求是要删除所有文件(只是删除文件 而不是文件夹),所以 我们肯定要遍历这个文件目录 (for  in遍历) 2 每遍历一个元素时(文件),我们要判断该元素的属性是 ...

c# 控制台应用程序批量修改文件夹下的后缀名(包括子文件夹)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

.Net 遍历目录下第一层的子文件夹和子文件夹里的文件

今天再完成一道任务的时候需要遍历得到所有txt文件,搜索很久终于得到了一个很方便的方法. foreach (string o in Directory.GetDirectories(@"D: ...

NSIS如何对一整个目录文件夹(包括子文件夹和其中的文件)压缩

原来不加/r参数,NSIS编译器就会不认识文件夹啊. File /r [dir] Reference: http://stackoverflow.com/questions/7973242/nsis- ...

C#获取某一路径下的所有文件名信息(包括子文件夹)

前言:初步梳理记录,以后慢慢总结更多的方法... 方法一:使用微软提供的方法:Dicrectory类中的:public static string[] GetFiles(string path, st ...

linux 查看文件夹下的文件个数(当前目录的文件数)//包含子目录

ls -l |grep "^-"|wc -l   //验证了redhat好用 或 find ./company -type f | wc -l 查看某文件夹下文件的个数,包括子文件 ...

随机推荐

java数据传递例子+内存分析

一.引用传递 1.例子1 package com.jikexueyuan.ref; class Ref1{ int temp = 10; } public class RefDemo01 { publ ...

开始使用MarkDown写博客

MarkDown 标题 #h1 ##h2 ###h3 h1 h2 h3 代码段 代码段缩进4个空格即可,如下:

&lt ...

《JAVA与模式》之享元模式

之享元模式 在阎宏博士的一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨 ...

CentOS用yum快速安装nginx

增加nginx源 vim  /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/ ...

java IO文件读写例子(OutputStream,InputStream,Writer,Reader)

一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package ...

Java 平时作业五

使用 I/O 流和文件对象实现目录备份功能. package asg5; import java.io.File; import java.io.FileInputStream; import jav ...

JAVA自学作业02

JAVA自学作业02 1.什么是标识符?由哪些部分组成?常见的命名规则有哪些? 标识符是用户为变量的内存空间所定义的字符序列: 可以由字母.下划线.美元符号以及数字组成,但数字不可作为首字符.标识符不 ...

Linux java 命令行编译 jar包

Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

Mean shift

转载:http://blog.csdn.net/google19890102/article/details/51030884 然后引入opencv中的pyrMeanShiftFiltering函数: ...

比较实用的前端 js框架 ,组件 汇总

一.js 前端ui框架 Kendo UI 商用收费,组件丰富,界面简洁美观,有jQuery和angular两个js的版本 Webix 商用收费,组件丰富,界面特别美观 JQwidgets 商用收费,丰 ...

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐