树型结构列出指定目录里所有文件的PHP类


Posted in PHP onOctober 09, 2006

<?
//以树型结构列出指定目录里的所有文件,如果你想知道自己某个目录里有哪些子目录和文件,可以调用这个类来查看,很方便的。

    # 演示的例子:
    $t = new TreeClimber( "asp" ); //新建物件,设置需要列出的目录:在此为asp目录
    echo arrayValuesToString( $t->getFileList( $t->getPath() ), "<BR>\n" );

    function arrayValuesToString( $ar, $nl="", $dolast=true ) {//调用函数
    $str = "";
    reset( $ar );
    $size = sizeof( $ar );
    $i = 1;
    while( list( $k, $v ) = each( $ar ) ) {
    if ( $dolast == false ) {
    if ( $i < $size ) {
        $str .= $ar[$k].$nl;
    }
    else {
        $str .= $ar[$k];
    }
    }
    else {
    $str .= $ar[$k].$nl;
    }
    $i++;
    }
    return $str;
    }
    ?>
    <?
    //以下为类文件
    class TreeClimber {
    var $path;
    var $fileList = array();
    function TreeClimber( $path = "." ) {
    $this->path = $path;
    }

    # 存取路径
    function getPath() { return $this->path; }
    function setPath( $v ) { $this->path = $v; }

    // 返回指定目录里的文件列表,如果没有指定目录,将使用当前目录
    //如果不能打开目录(可能没权限或目录不存在,将返回为空
    //以递归方式进行
     function getFileList( $dirname=null, $returnDirs=false, $reset=true ) {
    if ( $dirname == null ) { $dirname = $this->path; }
    # else { $this->setPath( $dirname ); }
    # dout( "Recursing into $dirname..." );
    if ( $reset ) {  
    $this->fileList = array();
    }
    $dir = opendir( $dirname );
    if ( ! $dir ) {  
    print( "<B><FONT COLOR=#FF0000>注意: TreeClimber.getFileList( $dirname ): 不能打开 $dirname!</FONT></B>" );
    return null;  
    }
    while( $file = readdir( $dir ) ) {
    if ( ereg( "^\.$", $file ) || ereg( "^\.\.$", $file ) ) continue;
    if ( is_dir( $dirname."/".$file ) ) {
    $this->getFileList( $dirname."/".$file, $returnDirs, false );
    if ( $returnDirs ) { $this->fileList[] = $dirname."/".$file;}
    }
    else { $this->fileList[] = $dirname."/".$file; }
    }
    sort( $this->fileList );
    return $this->fileList;
    }
    } //至此类结束
    ?>

PHP 相关文章推荐
PHP常用函数小技巧
Sep 11 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
php组合排序简单实现方法
Oct 15 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 #PHP
非常好的php目录导航文件代码
Oct 09 #PHP
PHP4.04简明安装
Oct 09 #PHP
利用 window_onload 实现select默认选择
Oct 09 #PHP
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 #PHP
简单的用PHP编写的导航条程序
Oct 09 #PHP
信用卡效验程序
Oct 09 #PHP
You might like
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
js Event对象的5种坐标
2011/09/12 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
初学python数组的处理代码
2011/01/04 Python
python的Template使用指南
2014/09/11 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python中的__slots__示例详解
2017/07/06 Python
Python处理session的方法整理
2019/08/29 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python支持多线程的爬虫实例
2019/12/21 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
酒店办公室文员岗位职责
2013/12/18 职场文书
学子宴答谢词
2014/01/25 职场文书
期末评语大全
2014/05/04 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
Python关于OS文件目录处理的实例分享
2021/05/23 Python
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android