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开发文件系统实例讲解
Oct 09 PHP
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
Zend的Registry机制的使用说明
May 02 PHP
深入PHP数据缓存的使用说明
May 10 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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
类的另类用法--数据的封装
2006/10/09 PHP
在JavaScript中调用php程序
2009/03/09 PHP
PHP内核探索:变量概述
2014/01/30 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
JavaScript版代码高亮
2006/06/26 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python功能键的读取方法
2015/05/28 Python
Python图算法实例分析
2016/08/13 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
在python里从协程返回一个值的示例
2019/02/19 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
护士个人简历自荐信
2013/10/18 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
法定代表人身份证明书
2015/06/18 职场文书