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>";