分类:
2009-04-29 17:13:35
// 说明: 获取文件夹大小并且显示为易于读取的文件单位 // 整理: //获取文件夹大小 function dir_size($dir) { if (!preg_match('#/$#', $dir)) { $dir .= '/'; } $totalsize = 0; //调用文件列表 foreach (get_file_list($dir) as $name) { $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") : (int)@filesize($dir.$name)); } return $totalsize; } //获取文件列表 function get_file_list($path) { $f = $d = array(); //获取所有文件 foreach (get_all_files($path) as $name) { if (@is_dir($path.$name)) { $d[] = $name; } else if (@is_file($path.$name)) { $f[] = $name; } } natcasesort($d); natcasesort($f); return array_merge($d, $f); } //获取所有文件 function get_all_files($path) { $list = array(); if (($hndl = @opendir($path)) === false) { return $list; } while (($file=readdir($hndl)) !== false) { if ($file != '.' && $file != '..') { $list[] = $file; } } closedir($hndl); return $list; } //转换单位 function setupSize($fileSize) { $size = sprintf("%u", $fileSize); if($size == 0) { return("0 Bytes"); } $sizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i]; } //目录 $path = './test_dir/'; //显示文件列表 print_r(get_file_list($path)).'
'; //显示文件大小 echo dir_size($path).'
'; //显示转换过单位的大小 echo setupSize(dir_size($path)); ?>