操作目录

本文介绍了一个使用PHP实现的目录遍历函数,能够递归地获取指定目录下的所有文件路径,并提供了一个用于计算目录总大小的方法。通过递归方式,不仅能够收集文件路径,还能进一步计算出整个目录及其子目录的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //会把所有的文件放到引用的那个数组中

       function myscandir($dirname,&$arr_files) {
        $arr = array();
        $dir=opendir($dirname);

        while($filename=readdir($dir)){
            $file=$dirname."/".$filename;
            if($filename!="." && $filename!=".."){
                if(is_dir($file)){
                    myscandir($file,$arr_files); //递归完成    
                }else{
                    $arr_files[] = $file;
                }
            }
        }
        closedir($dir);
    }
    
    $arr_files = array();
    myscandir('/www/web/test',$arr_files);
    print_r($arr_files);

 //求目录大小

    function toSize($size){
        $dw="Bytes";
        if($size > pow(2, 30)){
            $size=round($size/pow(2, 30), 2);
            $dw="GB";
        }else if($size > pow(2, 20)){
            $size=round($size/pow(2, 20), 2);
            $dw="MB";
        }else if($size > pow(2, 10)){
            $size=round($size/pow(2, 10), 2);
            $dw="KB";
        }else
            $dw="bytes";
        }
        return $size.$dw;
    }

    function dirsize($dirname) {
        $dirsize=0;

        $dir=opendir($dirname);

        while($filename=readdir($dir)){
            $file=$dirname."/".$filename;
            if($filename!="." && $filename!=".."){
                if(is_dir($file)){
                    $dirsize+=dirsize($file); //递归完成    
                }else{
                    $dirsize+=filesize($file);
                }
            }
        }
        closedir($dir);

        return $dirsize;

    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值