欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 前两天在一个PHP项目中需要获取指定文件夹的大小,因为文件夹可能有很多子文件夹及子文件夹构成,所以在网上找了一圈没找到合适的,有的是不能正确获取多层嵌套的文件夹,有的是代码量太多,效率低。
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
前两天在一个PHP项目中需要获取指定文件夹的大小,因为文件夹可能有很多子文件夹及子文件夹构成,所以在网上找了一圈没找到合适的,有的是不能正确获取多层嵌套的文件夹,有的是代码量太多,效率低。最后自己琢磨写了一个方法,效率还不错,而且可以获取到任意多层嵌套的文件夹大小。
代码:
function getFolderSize($dir){
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!="" && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = foldersize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
}
}
}
return $count_size;
}
?>
调用:
$folder_name = "textFolder";
echo getFolderSize($folder_name);
?>
上面getFolderSize这个函数返回的文件夹大小是以字节为单位的,为了更完善的实现功能,这里补充一个函数,将字节转换为KB,MB,GB,TB等单位。
转换函数:
function sizeFormat($bytes){
$kb = 1024;
$mb = $kb * 1024;
$gb = $mb * 1024;
$tb = $gb * 1024;
if (($bytes >= 0) && ($bytes
return $bytes . ' B';
} elseif (($bytes >= $kb) && ($bytes
return ceil($bytes / $kb) . ' KB';
} elseif (($bytes >= $mb) && ($bytes
return ceil($bytes / $mb) . ' MB';
} elseif (($bytes >= $gb) && ($bytes
return ceil($bytes / $gb) . ' GB';
} elseif ($bytes >= $tb) {
return ceil($bytes / $tb) . ' TB';
} else {
return $bytes . ' B';
}
}
?>
最终调用:
$folder_name = "textFolder";
echo sizeFormat(getFolderSize($folder_name));
?>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version
SublimeText3 Linux latest version

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.