PHP递归遍历指定文件夹内的文件实现方法


Posted in PHP onNovember 15, 2016

今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下。

发现php的文件夹函数好像没有提供遍历文件夹下的所有文件(包括子目录中的文件),于是,就想自己实现一个。

在写的时候发现一些操作文件夹的函数并不是自己想的那样。比如,dirname()根据提供的完整文件路径来取得文件所在的文件夹的路径,但如果你传入的是文件夹,它取的就是它的父文件夹。这点要明白。basename()也是同样的道理,传入文件夹路径取得就是文件夹的名字。这两个函数返回的结果结尾都不加'/'

<?php
$dirPath='/home/WWW/Test';//目录,结尾不加'/‘

//执行遍历
recursion_readdir($dirPath);

/**
*@summary 重复times次字符char
*@param $char 需要重复的字符
*@param $times 重复次数
*@return 返回重复字符组成的字符串
*/
function forChar($char='-',$times=0){
  $result='';
  for($i=0;$i<$times;$i++){
    $result.=$char;
  }
  return $result;
}

/**
*@summary  递归读取目录
*@param $dirPath 目录
*@param $Deep=0 深度,用于缩进,无需手动设置
*@return 无
*/
function recursion_readdir($dirPath,$Deep=0){
 $resDir=opendir($dirPath);
 while($basename=readdir($resDir)){
   //当前文件路径
   $path=$dirPath.'/'.$basename;
   if(is_dir($path) AND $basename!='.' AND $basename!='..'){
    //是目录,打印目录名,继续迭代
    echo forChar('-',$Deep).$basename.'/<br/>';
    $Deep++;//深度+1
    recursion_readdir($path,$Deep);
   }else if(basename($path)!='.' AND basename($path)!='..'){
     //不是文件夹,打印文件名
     echo forChar('-',$Deep).basename($path).'<br/>';
   }

 }
 closedir($resDir);
}

以上这篇PHP递归遍历指定文件夹内的文件实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
收集的DedeCMS一些使用经验
Mar 17 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
Jun 09 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
php计算函数执行时间的方法
Mar 20 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
php微信开发接入
Aug 27 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 PHP
php微信小程序解包过程实例详解
Mar 31 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 #PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 #PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 #PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 #PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 #PHP
php compact 通过变量创建数组
Nov 15 #PHP
PHP多维数组元素操作类的方法
Nov 14 #PHP
You might like
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
PHP文本操作类
2006/11/25 PHP
如何在php中正确的使用json
2013/08/06 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
js实时监听文本框状态的方法
2011/04/26 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
如何用python整理附件
2018/05/13 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
Python如何合并多个字典或映射
2020/07/24 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
python3处理word文档实例分析
2020/12/01 Python
什么是java序列化,如何实现java序列化
2012/11/14 面试题
个人四风对照检查材料
2014/09/26 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
乐山大佛导游词
2015/02/02 职场文书
七一建党节慰问信
2015/02/14 职场文书
运动会表扬稿范文
2015/05/05 职场文书
钱学森观后感
2015/06/04 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
Java Socket实现多人聊天系统
2021/07/15 Java/Android
dubbo服务整合zipkin详解
2021/07/26 Java/Android
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL