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与XML的PDF文档生成技术
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
php htmlspecialchars加强版
Feb 16 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 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+javascript模拟Matrix画面
2006/10/09 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
js+html制作简单验证码
2017/02/16 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
Python 列表的清空方式
2020/01/13 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
一帮一活动总结
2014/05/08 职场文书
项目经理任命书范本
2014/06/05 职场文书
毕业证代领委托书
2014/09/26 职场文书
安徽导游词
2015/02/12 职场文书
家庭经济困难证明
2015/06/23 职场文书
小学教代会开幕词
2016/03/04 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python