用递归实现遍历文件夹及其子目录

*

###什么是递归

**递归: 函数不断的调用函数,开辟内存: 是一种典型使用空间换时间的思想(突然间内存被大量占用,效率很高)。

当一个函数是为了解决某一个问题的时候, 发现在解决的过程中, 出现了子问题与本身要解决的问题(父问题)一致: 子问题与父问题一致,只是规模比较小.

如果碰到了相同的问题, 可以使用父问题的解决方案去解决子问题: 调用函数自己

###递归有两个要素

1 递归点: 解决父问题过程中,发现了子问题与父问题一致: 递归点: 递归调用函数

2 递归出口: 保证函数能够结束的地方就是递归出口

###思路

使用函数解决当前需要解决的问题: 不考虑子问题

寻找递归点: 函数在解决问题的过程中,有没有碰到与父问题相似的问题: 父问题是遍历文件夹: 子问题: 遍历出来的文件刚好又是文件夹

消除产生死递归的要素: .和..文件夹: 一个代表当前,一个代表上级

递归调用函数: 解决子问题

寻找递归出口: 整个文件夹遍历结束也没有发现文件夹:都是文件或者.和..文件夹

增加子文件的缩进: 子文件夹的遍历都是由上一级发展而来: 如果能够在每一层使用scandir的地方,定义一个层级来控制: 就可以描述当前层级是属于第几级,级别代表当前所属哪层一层文件夹: 级别就代表着缩进

###代码实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30   /*

* 实现遍历文件夹及其子目录

* @param1 string $dir,要获取文件的路径

* @param1 int $level=0,缩进层级

* @return 失败返回false 成功返回遍历结果

*/

function myscandir($dir, $level = 0){

//判断路径是否合法if(!is_dir($dir)) return false;

//取出该路径下的所有文件名(以数组的形式)$files = scandir($dir);

//遍历数组foreach($files as $file){

//剔除.与..目录if($file != '.' && $file != '..'){

//构造新路径$new_dir = $dir . '/' . $file;

//判断输出if(is_file($new_dir)){

//是文件,则以蓝色字体输出

echo str_repeat(' &nbsp', $level * 2),"$file
";

}else{

//是路径,则以红色字体输出并继续遍历

echo str_repeat(' &nbsp', $level * 2),"$file
";

//递归点

myscandir($new_dir, $level + 1);

}

}

}

}

打完收工:p

原文:大专栏  php递归遍历文件夹

php递归遍历文件夹

php递归获取文件夹,php递归遍历文件夹相关推荐

  1. php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码

    最近对操作文件比较感兴趣的说,所以咱们来把文件夹给遍历了,顺便生成个树. 我们要使用的函数有 Scandir,它的作用是列出指定路径中的文件和目录,就像 Dir 一样. > 与更强力的 Glob ...

  2. java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

  3. python下载文件并改名_Python遍历文件夹并批量改名

    在学校时,从六维空间下载了一些电子书,文学类全英文mobi格式的,有24G多.放在硬盘有段时间了,比较占地方,想移到移动硬盘里去.文件的目录格式如下: 第一级目录是按作者名排序的文件夹,第二级目录是以 ...

  4. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  5. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

  6. python修改文件后缀_python实现遍历文件夹修改文件后缀

    本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...

  7. python 文件夹下所有文件_使用Python遍历文件夹下所有文件(包所有含子文件夹)...

    我二话不说先贴为敬 def getFile(path,format): print(path) files = os.listdir(path) # 得到文件夹下的所有文件,包含文件夹名称 FileL ...

  8. SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)

    最近半道接手了一个项目需要使用CSVtoSQL,因为关于SSIS包这个东西是别人已经创建好了的,但不相识,所以接手后就决定自己研究一下,创建SSIS包时,在Foreach循环容器的设置上抠破脑门,网上 ...

  9. linux shell遍历文件,Linux_shell脚本_遍历文件夹下所有文件

    #!/bin/bash functionergodic(){ forfile in `ls$1` do if [-d$1"/"$file] #如果 file存在且是一个目录则为真 ...

  10. python 文件操作 os.listdir() 遍历文件

    功能: 返回所给路径中所有文件(包含文件夹)的名称列表 doc: def listdir(*args, **kwargs): # real signature unknown""& ...

最新文章

  1. AWS — AWS Wavelength
  2. 【项目管理】专用中英文术语词汇 205
  3. 《民国枭雄杜月笙》—— 听后总结
  4. Boost::context模块fiber的斐波那契测试程序
  5. app.config数据库路径问题
  6. NLP文本相似度 - LCS(最长公共子序列)java代码
  7. python入门:输出1-100之内的所有奇数和偶数
  8. 过程 线 多线程 并发 同步异步
  9. jQuery Mobile 1.3.1 发布
  10. android addr2line 用法,Android studio中NDK开发(四)——使用addr2line分析Crash日志
  11. uniapp保存图片到相册
  12. 拉绳位移传感器的零线有电吗?
  13. win10启用长路径
  14. 数据结构:单链表(水浒传英雄操作为例)+单链表面试题
  15. 《平凡的世界》之我看
  16. 吃豆人,一个小游戏,使用第三方图形库EasyX
  17. 【编程工具】程序中出现中文乱码的解决方法
  18. rabbitmq简单入门
  19. 基于三菱PLC大厅自动门系统的控制设计
  20. 如何设计出简洁实用的APP开发交互界面?

热门文章

  1. ARK(xuetr)与Rootkit
  2. Storm:最火的流式处理框架
  3. c4droid语言实现窗口,【图片】[c4droid源码]一个简单的计算器源码_c4droid吧_百度贴吧...
  4. 电商数据指标与《电商数据分析与数据化营销》
  5. Aplayer音乐播放插件
  6. 小米wifi链android,小米WiFi链是什么?怎么玩?小米WiFi链app玩法详解
  7. stdlib.h使用
  8. app显示机智云服务器图片,【图片】【使用指南】机智云FAQ文档【gokit吧】_百度贴吧...
  9. tensorflow分类图片预处理
  10. 实惠的Arduino开发板——合宙ESP32C3