12.2.3 統計目錄中的個數和大小

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>";
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 說明本次redis集群安裝在rhel6.8 64位機器上,redis版本為3.2.8,redis的gem文件版本為...
    讀或寫閱讀 15,123評論 3 9
  • 文件系統概述 文件的類型 在程序運行時,程序本身和數據一般都存在內存中,當程序運行結束后,存放在內存中的數據被釋放...
    dptms閱讀 1,029評論 0 1
  • 1 文件與目錄 1.1 解析目錄路徑 返回路徑中的文件名部分string basename(string path...
    zshanjun閱讀 481評論 0 0
  • 文 | 晨兒 當聽到你說要離別 心在顫抖 你已闖進我心房 卻不知所措
    晨妤兒閱讀 218評論 0 0
  • 近日手機壞了,煩的要死,朋友問:怎么回事? 我說:就是其他軟件都升級了,可是我的手機系統還是原來的,這樣就總是卡死...
    深嗑閱讀 165評論 0 1