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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
PHP语法速查表
Jan 02 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
PHP动态柱状图实现方法
Mar 30 PHP
PHP文件上传操作实例详解
Sep 27 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 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
中英文字符串翻转函数
2008/12/09 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python33 urllib2使用方法细节讲解
2013/12/03 Python
详解django中使用定时任务的方法
2018/09/27 Python
python制作填词游戏步骤详解
2019/05/05 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
Internal修饰符有什么含义
2013/07/10 面试题
医学护理毕业生自荐信
2013/11/07 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
诚信承诺书范文
2014/03/27 职场文书
党员四风剖析材料
2014/08/27 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python