递归计算文件夹大小

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';
}

你可能感兴趣的:(递归计算文件夹大小)