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文件操作的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did27883