循环读取目录中的子目录和其中的文件

<?php
    /*
    *@Description:循环读取目录中的子目录和其中的文件
    *
    *
    */
    class find{
    //    public $dir = '';

        public function findPath($dirname){
            $this->dir = $dirname;
            //return $this->dir;
            if(!is_dir($this->dir)){
                return false;
            }
            $dirs[] = '';//用于记录目录
            $files = array(); //用于记录文件
            while(list($k, $path) = each($dirs)){
                $absDirPath = "$this->dir/$path";//当前要遍历的目录的绝对路径
                $handle = opendir($absDirPath);//打开目录句柄

                while(false !== $item = readdir($handle)){
                    if($item == '.' || $item == '..' ) continue;
                    $relPath = "$path/$item";//子项目相对路径
                    $absPath = "$this->dir/$relPath";//子项目绝对路径
                    if(is_dir($absPath)){
                        $dirs[] = $relPath;
                    }else{
                        $files[] = $relPath;
                    }
                }
                closedir($handle);
            }
        //    array_walk($dirs, 'fullName'); //个人觉得此方法可行,但是实际中遇到了问题
        //    array_walk($files, 'fullName');
            $dirnums = count($dirs);
            $filenums = count($files);
            for($i = 0; $i < $dirnums; $i++){
                if(!empty($dirs[$i])){
                    $dirs[$i] = $this->dir.$dirs[$i];
                }else{
                    unset($dirs[$i]);
                }
            }
            for($x = 0; $x < $filenums; $x++){
                if(!empty($files[$x])){
                    $files[$x] = $this->dir.$files[$x];
                }
            }
            return array($dirs, $files);
        }

        /*
        *@Description:得到完整的路径名
        *
        */
        //public function fullName($item){
        //    $item = $this->dir.$item;
        //}
    }    

    $dirname = 'C:/AppServ/www/homework2';
    $find = new find();
    $result = $find -> findPath($dirname);
    print_r($result);
?>


来源地址:http://www.aitiblog.com/php/299.html   但是我小小改动了一下。因为那个原来的函数得到的是相对的文件名。我想要得到绝对文件名。我这里用了一个较笨的方法。请大神指点更方便的方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值