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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
php mysql数据库操作分页类
Jun 04 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
如何使用Strace调试工具
Jun 03 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
最常用的8款PHP调试工具
Jul 06 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
PHP延迟静态绑定的深入讲解
Apr 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
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
Javascript----文件操作
2007/01/18 Javascript
Prototype Class对象学习
2009/07/19 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
OpenCV 边缘检测
2019/07/10 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
英语专业学生个人求职信
2014/01/28 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
英文感谢信格式
2015/01/21 职场文书
反腐倡廉观后感
2015/06/08 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
SQLServer中exists和except用法介绍
2021/12/04 SQL Server