PHP递归遍历指定文件夹内的文件实现方法

5年以前  |  阅读数:886 次  |  编程语言:PHP 

今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例