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 面向对象(学习记录)
Dec 02 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
PHP 学习路线与时间表
Feb 21 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 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
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php输出图像的方法实例分析
2017/02/16 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
python如何制作英文字典
2019/06/25 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
python plotly画柱状图代码实例
2019/12/13 Python
python正则表达式实例代码
2020/03/03 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
幼儿园感谢信
2015/01/21 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫