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中转义mysql语句的实现代码
Jun 24 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP实现的日历功能示例
Sep 01 PHP
php两点地理坐标距离的计算方法
Dec 29 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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类
2006/11/27 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
Javascript中的数学函数
2007/04/04 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
介绍Python中几个常用的类方法
2015/04/08 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python双链表原理与实现方法详解
2020/02/22 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
.NET笔试题(20个问题)
2016/02/02 面试题
银行门卫岗位职责
2013/12/29 职场文书
教师一岗双责责任书
2014/04/16 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android