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 10 PHP
php 读取文件乱码问题
Feb 20 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
关于php循环跳出的问题
Jul 01 PHP
php随机显示图片的简单示例
Feb 15 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
Smarty3配置及入门语法
Feb 22 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
php连接mysql数据库最简单的实现方法
Sep 24 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
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
Javascript 面试题随笔
2011/03/31 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
Python中转换角度为弧度的radians()方法
2015/05/18 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
基于python检查矩阵计算结果
2020/05/21 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
《唯一的听众》教学反思
2014/02/20 职场文书
应届生自荐信范文
2014/02/21 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2019各种保证书范文
2019/06/24 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
Python实现为PDF去除水印的示例代码
2022/04/03 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript