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设计模式中的工厂模式
Jun 12 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
分享3个php获取日历的函数
Sep 25 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
php生成curl命令行的方法
Dec 14 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 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中使用模板的方法
2008/05/24 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
Vue响应式原理详解
2017/04/18 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
webpack3之loader全解析
2017/10/26 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
vue 插件的方法代码详解
2019/06/06 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
python中尾递归用法实例详解
2015/04/28 Python
解决Django中多条件查询的问题
2019/07/18 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
优秀通讯员事迹材料
2014/01/28 职场文书
大学生军训感想
2014/02/16 职场文书
计划生育标语
2014/06/23 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
mysql 生成连续日期及变量赋值
2022/03/20 MySQL