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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php define的第二个参数使用方法
Nov 04 PHP
解决php表单重复提交实现方法
Sep 29 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
php事件驱动化设计详解
Nov 10 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 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
海贼王:最美的悬赏令!
2020/03/02 日漫
php.ini中文版
2006/10/09 PHP
图书管理程序(二)
2006/10/09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
python实现Windows电脑定时关机
2018/06/20 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
一套C++笔试题面试题
2012/06/06 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
七年级作文之英语老师
2019/10/28 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
如何Tomcat中使用ipv6地址
2022/05/06 Servers