例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)';