递归计算文件夹大小

public function inspect($dirname){                                      
    $dh = opendir($dirname);                       //打开目录,返回一个目录流
    $size = 0;      //初始大小为0 
    while(false !== ($file = @readdir($dh))){     //循环读取目录下的文件
        if($file!='.' and $file!='..'){
            $path = $dirname.'\\'.$file;     //设置目录,用于含有子目录的情况
            if(is_dir($path)){
                $size += $this->inspect($path);  //递归调用,计算目录大小
            }elseif(is_file($path)){
                $size += filesize($path);   //计算文件大小
            }
        } 
    }   
    closedir($dh);             //关闭目录流
    return $size;               //返回大小
}

public function counts(){   
    $size=$this->inspect(dirname(__FILE__));
    $size=$size/1024/1024;
    echo $size.'MB';
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容