例01:
<?php function dirsize($dir){ $size=0; //打开目录 $dd=opendir($dir); //--opendir("")打开一个目录,返回此目录的资源句柄 readdir($dd); //--通过读两次,来跳过特殊目录"."、".." readdir($dd); //遍历目录累加大小 while($f = readdir($dd)){ //--readdir(资源句柄)从目中读取一个目录或文件,并指针向下移动一位。 $file = $dir."/".$f; //--为文件名添加目录名 if(is_file($file)){ $size += filesize($file); } if(is_dir($file)){ $size +=dirSize($file); //--递归调用 } } //关闭目录 closedir($dd); //--closedir(资源句柄)关闭打开的目录 return $size; } echo dirsize(‘D:\wamp‘)/1024/1024;//为路径
例02:
<?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(‘D:\wamp\www\test\BYGD\class‘)); //指定路径 // get byte 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.‘ bytes)‘;