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 相关文章推荐
php实现的在线人员函数库
Apr 09 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
php中存储用户ID和密码到mysql数据库的方法
Feb 06 PHP
php多文件上传实现代码
Feb 20 PHP
PHP return语句的另一个作用
Jul 30 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
php 使用file_get_contents读取大文件的方法
Nov 13 PHP
使用php实现从身份证中提取生日
May 09 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php支付宝接口用法分析
2015/01/04 PHP
JavaScript日历实现代码
2010/09/12 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python中的函数用法入门教程
2014/09/02 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python的argparse库使用详解
2018/10/09 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
中学生学习生活的自我评价
2013/10/26 职场文书
化妆品促销方案
2014/02/24 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
小学数学课题方案
2014/06/15 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
预备党员考察意见范文
2015/06/01 职场文书