![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
本人最近写了个统计文件夹的大小的程序,使用了递归,可是统计出错,不能实现我想要的目的,程序如下,希望各位高手指点一二。[PHP]
//计算目录的文件大小
function endslash($str)
{
return rtrim($str, '/') . '/';
}
function dir_stats($dir)
{
$size = 0;
$dirs = 0;
$files = 0;
$dir = endslash($dir);
$h = @opendir($dir);
if(!$h)
{
return array('size' => $size, 'dirs' => $dirs, 'files' => $files);
}
while( false != ($f = @readdir($h)))
{
if($f != '.' && $f != '..')
{
if(is_dir($dir.$f))
{
$dirs++;
$dirs_in = dir_stats( $dir . $f );
$dirs += $dirs_in['dirs'];
}
else
{
$size += filesize($dir.$f);
$files++;
if(isset($dirs_in))
{
$size += $dirs_in['size'];
$files += $dirs_in['files'];
}
}
}
}
return array('size' => $size, 'dirs' => $dirs, 'files' => $files);
}[/PHP]
为什么返回的结果不对呢???纳闷中……

