PHP计算文件夹(目录)占用的空间大小没有现成的函数,只能自己遍历目录,然后把所有文件的大小加起来。
以下是本站原创的一个PHP计算目录大小的函数,具体细节请看函数的参数说明。
它可以用来计算一个文件夹占据了多少字节的磁盘空间,支持子目录递归统计,用来计算文件夹及子文件夹的文件总大。
请下载附件查看,避免直接复制以下代码导致代码被意外修改。
<?php
/*
* 获取目录大小,单位为字节(B)
* @author www.51-n.com
* @param string $path 目录路径,可以是相对路径,也可以是绝对路径,留空('')则取当前路径
* @param boolean $recursive 是否递归遍历子目录,默认为是
* @return integer $size 目录中所有文件占据的字节数,如果目录不存在或无法读取则返回-1
*/
function dirSize($path='',$recursive=true){
$size = 0;
$path = empty($path)?'.':$path;
$path = str_replace('\\','/',$path);
$path = rtrim($path,'/').'/';
$recursive = $recursive?true:false;
$function = __FUNCTION__;
if(!is_dir($path)||!is_readable($path)){
return -1;
}else{
if($handler = opendir($path)){
while(false!==($file=readdir($handler))){
if($file!='.'&&$file!='..'){
$filepath = $path.$file;
if(is_dir($filepath)){
if($recursive){
$size += $function($filepath);
}
}else{
$size += filesize($filepath);
}
}
}
closedir($handler);
}
}
return $size;
}
//以下是一个实例
$dir = 'F:\Web\www';//换成你自己的目录
$size = dirSize($dir,false);
$sizeRecursive = dirSize($dir);
if($size>=0){
echo $dir.'的总容量为'.$sizeRecursive.'字节'.'不包含子目录及文件的容量为'.$size.'字节';
}else{
echo '目录'.$dir.'不存在或无法访问';
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?新建账号
×
|