树型结构列出指定目录里所有文件的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与javascript的两种交互方式
Oct 09 PHP
PHP通用检测函数集合
Nov 25 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
php简单处理XML数据的方法示例
May 19 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php的优点总结 php有哪些优点
Jul 19 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
详解phpstorm2020最新破解方法
Sep 17 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
php处理带有中文URL的方法
2016/07/11 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
node文件上传功能简易实现代码
2017/06/16 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
邹越感恩父母演讲稿
2014/08/28 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技