12.2.3 統(tǒng)計目錄中的個數(shù)和大小
disk_free_space -- 返回目錄中的可用空間
語法:float disk_free_space ( string directory )
給出一個包含有一個目錄的字符串趴俘,本函數(shù)將根據(jù)相應(yīng)的文件系統(tǒng)或磁盤分區(qū)返回可用的字節(jié)數(shù)番捂。
disk_total_space -- 返回一個目錄的磁盤總大小
語法:float disk_total_space ( string directory )
給出一個包含有一個目錄的字符串洒闸,本函數(shù)將根據(jù)相應(yīng)的文件系統(tǒng)或磁盤分區(qū)返回所有的字節(jié)數(shù)。
<?php
//定義一個統(tǒng)計指定目錄大小的函數(shù)
function dirSize($dir){
$size=0;
//1. 判斷參數(shù)是否有效
if(!file_exists($dir) || !is_dir($dir)){
die(“無效的參數(shù)撑螺!");
}
//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)){
//采用遞歸調(diào)用,統(tǒng)計子目錄大小
$size+=dirSize($file);
}
}
//5. 關(guān)閉目錄
closedir($dd);
//6. 返回結(jié)果
return $size;
}
?>
dirnum.php
<?php
$dirn = 0; //目錄數(shù)
$filen = 0; //文件數(shù)
//用來統(tǒng)計一個目錄下的文件和目錄的個數(shù)
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 "目錄數(shù)為:{$dirn}<br>";
echo "文件數(shù)為:{$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
//用來統(tǒng)計一個目錄下大小
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>";