本文章来告诉你php如何获取文件夹大小吧,我们递归列出文件然后再利用filesize来统计文件大小并显示出来。
|  代码如下 | 
复制代码 | 
<?php   //获取文件夹大小 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)).'<br>';   //显示文件大小 echo dir_size($path).'<br>';   //显示转换过单位的大小 echo setupSize(dir_size($path));   ?>  | 
dir_size() 是获取文件夹大小的函数,函数中使用了递归的方法,此函数需要调用 get_file_list() ,获取文件夹中的所有文件列表,如果文件列表中有文件夹存在,就调用 get_all_files() 获取文件夹下的文件列表。由此取得目标文件夹的大小。
setupSize() 是将传人的大小转换为易于读取的文件单位,可以转换成 Bytes, KB, MB, GB, TB, PB, EB, ZB, YB 等单位。
列2
|  代码如下 | 
复制代码 | 
<?php function getDirSize($dir)     {         $handle = opendir($dir);         while (false!==($FolderOrFile = readdir($handle)))         {             if($FolderOrFile != "." && $FolderOrFile != "..")             {                 if(is_dir("$dir/$FolderOrFile"))                 {                     $sizeResult += getDirSize("$dir/$FolderOrFile");                 }                 else                 {                     $sizeResult += filesize("$dir/$FolderOrFile");                 }             }            }         closedir($handle);         return $sizeResult;     }     // 单位自动转换函数     function getRealSize($size)     {         $kb = 1024;         // Kilobyte         $mb = 1024 * $kb;   // Megabyte         $gb = 1024 * $mb;   // Gigabyte         $tb = 1024 * $gb;   // Terabyte                 if($size < $kb)         {             return $size." B";         }         else if($size < $mb)         {             return round($size/$kb,2)." KB";         }         else if($size < $gb)         {             return round($size/$mb,2)." MB";         }         else if($size < $tb)         {             return round($size/$gb,2)." GB";         }         else         {             return round($size/$tb,2)." TB";         }     }     echo getRealSize(getDirSize(dirname($_SERVER[SCRIPT_FILENAME])./include/));  ?>
 ######################################################### //function dirsize($dir) //{ //   $handle=opendir($dir); //   $size = 0; //   while ( $file=readdir($handle) ) //   { //       if ( ( $file == "." ) || ( $file == ".." ) ) continue; //       if ( is_dir("$dir/$file") ) //           $size += dirsize("$dir/$file"); //       else //           $size += filesize("$dir/$file"); //   } //   closedir($handle); //   return $size; //} //$big=dirsize(dirname($_SERVER[SCRIPT_FILENAME])."/"); //echo $big;  | 
得到的结果是小数点后两位的
$big*1024 得到单位为KB
 教程地址:http://www.phprm.com/develop/45239.html
欢迎转载!但请带上文章地址^^