PHP内置函数获取文件夹的大小

  作者:bea

在很多项目中我们都要对文件夹操作,创建一个文件夹、删除一个文件夹、复制一个文件夹等,这些都要用到PHP对文件夹的操作内置的PHP函数,这里我们来实现获取指定文件夹的大小。 先看下面的代码: 只要我们指定文件夹dirname就可以计算出这个文件夹的大小来。 我在写代码的时候遇到了一个问题,就是把这行:$dir_size = round(getDirSize('editor')/pow(1024,1),1).'KB';如何放到getDirSize()函数中去则获取的结果不
在很多项目中我们都要对文件夹操作,创建一个文件夹、删除一个文件夹、复制一个文件夹等,这些都要用到PHP对文件夹的操作内置的PHP函数,这里我们来实现获取指定文件夹的大小。

先看下面的代码:

//获取文件夹的大小
function getDirSize($dirname){
$dir_size = 0;
if($dir_link = @opendir($dirname)){
while($file = readdir($dir_link)){
if($file!='.' && $file!='..'){
$filename = $dirname.'/'.$file;
if(is_dir($filename)){
$dir_size+=getDirSize($filename);
}
if(is_file($filename)){
$dir_size+=filesize($filename);
}
}
}
}
closedir($dir_link);
return $dir_size;
}

$dir_size = round(getDirSize('editor')/pow(1024,1),1).'KB';
echo $dir_size;
?>

只要我们指定文件夹dirname就可以计算出这个文件夹的大小来。
我在写代码的时候遇到了一个问题,就是把这行:$dir_size = round(getDirSize('editor')/pow(1024,1),1).'KB';如何放到getDirSize()函数中去则获取的结果不同。输出的结果没有包含这个文件夹下面的子文件夹的大小。

代码如下:

//获取文件夹的大小
function getDirSize($dirname){
$dir_size = 0;
if($dir_link = @opendir($dirname)){
while($file = readdir($dir_link)){
if($file!='.' && $file!='..'){
$filename = $dirname.'/'.$file;
if(is_dir($filename)){
$dir_size+=getDirSize($filename);
}
if(is_file($filename)){
$dir_size+=filesize($filename);
}
}
}
}
closedir($dir_link);
$dir_size = round(getDirSize('editor')/pow(1024,1),1).'KB';
return $dir_size;
}

echo $dir_size;
?>

知道什么原因的朋友请通过评论反馈给作者。谢谢 有用  |  无用

猜你喜欢