美文网首页
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