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和ACCESS写聊天室(五)
Oct 09 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php 常用算法和时间复杂度
Jul 01 PHP
php自定文件保存session的方法
Dec 10 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
php 策略模式原理与应用深入理解
Sep 25 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/04/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
前端常见跨域解决方案(全)
2017/09/19 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
保安拾金不昧表扬信
2014/01/15 职场文书
买房子个人收入证明
2014/01/16 职场文书
法制宣传标语
2014/06/23 职场文书
土建技术员岗位职责
2015/04/11 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers