php专区

 首页 > php专区 > PHP高级 > 文件上传 > php如何获取文件夹大小程序代码 - php文件操作

php如何获取文件夹大小程序代码 - php文件操作

分享到:
【字体:
导读:
          本文章来告诉你php如何获取文件夹大小吧,我们递归列出文件然后再利用filesize来统计文件大小并显示出来,代码如下:?php 获取文件夹大小...

php如何获取文件夹大小程序代码

本文章来告诉你php如何获取文件夹大小吧,我们递归列出文件然后再利用filesize来统计文件大小并显示出来,代码如下:

  1. //获取文件夹大小  
  2. function dir_size($dir) {  
  3.     if (!preg_match('#/$#'$dir)) {  
  4.         $dir .= '/';  
  5.     }  
  6.     $totalsize = 0;  
  7.     //调用文件列表  
  8.     foreach (get_file_list($diras $name) {  
  9.         $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") :  
  10.             (int)@filesize($dir.$name));  
  11.     }  
  12.     return $totalsize;  
  13. }  
  14.    
  15. //获取文件列表  
  16. function get_file_list($path) {  
  17.     $f = $d = array();  
  18.     //获取所有文件  
  19.     foreach (get_all_files($pathas $name) {  
  20.         if (@is_dir($path.$name)) {  
  21.             $d[] = $name;  
  22.         } else if (@is_file($path.$name)) {  
  23.             $f[] = $name;  
  24.         }  
  25.     }  
  26.     natcasesort($d);  
  27.     natcasesort($f);  
  28.     return array_merge($d$f);  
  29. }  
  30.    
  31. //获取所有文件  
  32. function get_all_files($path) {  
  33.     $list = array();  
  34.     if (($hndl = @opendir($path)) === false) {  
  35.         return $list;  
  36.     }  
  37.     while (($file=readdir($hndl)) !== false) {  
  38.         if ($file != '.' && $file != '..') {  
  39.             $list[] = $file;  
  40.         }  
  41.     }  
  42.     closedir($hndl);  
  43.     return $list;  
  44. }  
  45.    
  46. //转换单位  
  47. function setupSize($fileSize) {  
  48.     $size = sprintf("%u"$fileSize);  
  49.     if($size == 0) {  
  50.         return("0 Bytes");  
  51.     }  
  52.     $sizename = array(" Bytes"" KB"" MB"" GB"" TB"" PB"" EB"" ZB"" YB");  
  53.     return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i]; 
  54. }  
  55.    
  56. //目录  
  57. $path = './test_dir/';  
  58.    
  59. //显示文件列表  
  60. print_r(get_file_list($path)).'
    '
    ;  
  61.    
  62. //显示文件大小  
  63. echo dir_size($path).'
    '
    ;  
  64.    
  65. //显示转换过单位的大小  
  66. echo setupSize(dir_size($path));  
  67. ?> 

dir_size() 是获取文件夹大小的函数,函数中使用了递归的方法,此函数需要调用 get_file_list(),获取文件夹中的所有文件列表,如果文件列表中有文件夹存在,就调用 get_all_files() 获取文件夹下的文件列表,由此取得目标文件夹的大小。

setupSize() 是将传人的大小转换为易于读取的文件单位,可以转换成 Bytes, KB, MB, GB, TB, PB, EB, ZB, YB 等单位。

例2,代码如下:

  1. function getDirSize($dir
  2.     {  
  3.         $handle = opendir($dir); 
  4.         while (false!==($FolderOrFile = readdir($handle))) 
  5.         {  
  6.             if($FolderOrFile != "." && $FolderOrFile != "..")  
  7.             {  
  8.                 if(is_dir("$dir/$FolderOrFile")) 
  9.                 {  
  10.                     $sizeResult += getDirSize("$dir/$FolderOrFile");  
  11.                 } 
  12.                 else 
  13.                 {  
  14.                     $sizeResult += filesize("$dir/$FolderOrFile");  
  15.                 } 
  16.             }     
  17.         } 
  18.         closedir($handle); 
  19.         return $sizeResult
  20.     } 
  21.     // 单位自动转换函数 
  22.     function getRealSize($size
  23.     {  
  24.         $kb = 1024;         // Kilobyte 
  25.         $mb = 1024 * $kb;   // Megabyte 
  26.         $gb = 1024 * $mb;   // Gigabyte 
  27.         $tb = 1024 * $gb;   // Terabyte 
  28.          
  29.         if($size < $kb
  30.         {  
  31.             return $size." B"
  32.         } 
  33.         else if($size < $mb
  34.         {  
  35.             return round($size/$kb,2)." KB"
  36.         } 
  37.         else if($size < $gb
  38.         {  
  39.             return round($size/$mb,2)." MB"
  40.         } 
  41.         else if($size < $tb
  42.         {  
  43.             return round($size/$gb,2)." GB"
  44.         } 
  45.         else 
  46.         {  
  47.             return round($size/$tb,2)." TB"
  48.         } 
  49.     } 
  50.     echo getRealSize(getDirSize(dirname($_SERVER[SCRIPT_FILENAME])./include/)); 
  51.  
  52. ?> 
  53. ######################################################### 
  54. //function dirsize($dir)  
  55. //{ 
  56. //   $handle=opendir($dir);  
  57. //   $size = 0; 
  58. //   while ( $file=readdir($handle) )  
  59. //   { 
  60. //       if ( ( $file == "." ) || ( $file == ".." ) ) continue; 
  61. //       if ( is_dir("$dir/$file") ) 
  62. //           $size += dirsize("$dir/$file"); 
  63. //       else 
  64. //           $size += filesize("$dir/$file"); 
  65. //   } 
  66. //   closedir($handle); 
  67. //   return $size; 
  68. /
分享到:
php 文件目录操作函数 - php文件操作
php 文件目录操作函数 在php中我们有大量的可对文件与目录操作的函数,下面我来总结一下这些函数的用法. mkdir();函数:php创建文件夹和文件 ///创建文件夹   代码如下 复制代码  function createdir($dir)  {  if(file_exists($dir) && is_dir($dir)){//如果存在这个...
php中删除非空目录实现代码 - php文件操...
php中删除非空目录实现代码 php删除目录及文件的文件原是就是先检查此目录下是否有文件,如果有,是文件夹的话就再调用此函数删除,如果是文件就直接调用 unlink 删除,最后删除此目录,删除文件夹的操作时,必须首先确保您有这个权限!  
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……