好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

本文章来告诉你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;   /

查看更多关于php如何获取文件夹大小程序代码 - php文件操作的详细内容...

  阅读:66次