= 1024 && $i < 5; $i++) { $size = (int) $size / 1024; } return round($size, 2) . $delimiter . $units[$i]; } /** * 使用递归遍历获取文件夹的大小 */ function get_dir_size($dirname) { static $tot; //这里把$tot定义为静态的,表示$tot全局只有这一个变量 $ds = opendir($dirname); //创建一个目录资源, 传入的目录就是资源 while ($file = readdir($ds)) { //从目录中读取到条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $dirname . "/" . $file; //判断,如果是 . 或者 ..的目录就过滤掉 if ($file != "." && $file != "..") { if (is_dir($path)) { //判断如果找到的是目录 get_dir_size($path); //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname } else { $tot += filesize($path); } } } return $tot; } /** * 递归删除文件夹 */ function deldir($path) { //如果是目录则继续 if (is_dir($path)) { //扫描一个文件夹内的所有文件夹和文件并返回数组 $p = scandir($path); foreach ($p as $val) { //排除目录中的.和.. if ($val != "." && $val != "..") { //如果是目录则递归子目录,继续操作 if (is_dir($path . $val)) { //子目录中操作删除文件夹和文件 deldir($path . $val . DIRECTORY_SEPARATOR); //目录清空后删除空文件夹 @rmdir($path . $val . DIRECTORY_SEPARATOR); } else { //如果是文件直接删除 unlink($path . $val); } } } } }