12.2.3 统计目录中的个数和大小
disk_free_space -- 返回目录中的可用空间
语法:float disk_free_space ( string directory )
给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。
disk_total_space -- 返回一个目录的磁盘总大小
语法:float disk_total_space ( string directory )
给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。
<?php
//定义一个统计指定目录大小的函数
function dirSize($dir){
$size=0;
//1. 判断参数是否有效
if(!file_exists($dir) || !is_dir($dir)){
die(“无效的参数!");
}
//2. 打开目录
$dd = opendir($dir);
//3. 跳过连个特殊目录:"."和".."
readdir($dd);readdir($dd);
//4. 开始遍历目录中文件
while($f = readdir($dd)){
//加上目录名
$file = rtrim($dir,"/")."/".$f;
//判断是否是文件
if(is_file($file)){
$size+=filesize($file);
}
//判断是否是目录
if(is_dir($file)){
//采用递归调用,统计子目录大小
$size+=dirSize($file);
}
}
//5. 关闭目录
closedir($dd);
//6. 返回结果
return $size;
}
?>
dirnum.php
<?php
$dirn = 0; //目录数
$filen = 0; //文件数
//用来统计一个目录下的文件和目录的个数
function getdirnum($file) {
global $dirn;
global $filen;
$dir = opendir($file);
while($filename = readdir($dir)) {
if($filename!="." && $filename !="..") {
$filename = $file."/".$filename;
if(is_dir($filename)) {
$dirn++;
getdirnum($filename); //递归,就可以查看所有子目录
} else {
$filen++;
}
}
}
closedir($dir);
}
getdirnum("phpmyadmin");
echo "目录数为:{$dirn}<br>";
echo "文件数为:{$filen}<br>";
disk.php
<?php
$total = disk_total_space("C:");
$free = disk_free_space("C:");
echo "C: 盘的总大小:".round($total/pow(2,30))."G<br>";
echo "C: 盘的可用空间:".round($free/pow(2,30))."G<br>";
test.php
<?php
//用来统计一个目录下大小
function dirsize($file) {
$size = 0;
$dir = opendir($file);
while($filename = readdir($dir)) {
if($filename!="." && $filename !="..") {
$filename = $file."/".$filename;
if(is_dir($filename)) {
//使用递归
$size += dirsize($filename);
} else {
$size += filesize($filename);
}
}
}
closedir($dir);
return $size;
}
echo "phpmyadmin目录大小为:".(dirsize("phpmyadmin")/pow(1024,2))."MB<br>";
网友评论