美文网首页
12.2.3 统计目录中的个数和大小

12.2.3 统计目录中的个数和大小

作者: 曹渊说创业 | 来源:发表于2016-12-22 08:45 被阅读71次

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

相关文章

网友评论

      本文标题:12.2.3 统计目录中的个数和大小

      本文链接:https://www.haomeiwen.com/subject/myucvttx.html