找回密码
 新建账号

[PHP] PHP统计文件夹目录大小的函数

[复制链接]
php 发表于 2014/1/23 17:32 | 显示全部楼层 |阅读模式
PHP计算文件夹(目录)占用的空间大小没有现成的函数,只能自己遍历目录,然后把所有文件的大小加起来。
以下是本站原创的一个PHP计算目录大小的函数,具体细节请看函数的参数说明。
它可以用来计算一个文件夹占据了多少字节的磁盘空间,支持子目录递归统计,用来计算文件夹及子文件夹的文件总大。
请下载附件查看,避免直接复制以下代码导致代码被意外修改。
<?php
        /*
         * 获取目录大小,单位为字节(B)
         * @author www.51-n.com
         * @param string $path 目录路径,可以是相对路径,也可以是绝对路径,留空('')则取当前路径
         * @param boolean $recursive 是否递归遍历子目录,默认为是
         * @return integer $size 目录中所有文件占据的字节数,如果目录不存在或无法读取则返回-1
        */
        function dirSize($path='',$recursive=true){
                $size = 0;
                $path = empty($path)?'.':$path;
                $path = str_replace('\\','/',$path);
                $path = rtrim($path,'/').'/';
                $recursive = $recursive?true:false;
                $function = __FUNCTION__;
                if(!is_dir($path)||!is_readable($path)){
                        return -1;
                }else{
                        if($handler = opendir($path)){
                                while(false!==($file=readdir($handler))){
                                        if($file!='.'&&$file!='..'){
                                                $filepath = $path.$file;
                                                if(is_dir($filepath)){
                                                        if($recursive){
                                                                $size += $function($filepath);
                                                        }
                                                }else{
                                                        $size += filesize($filepath);
                                                }
                                        }
                                }
                                closedir($handler);
                        }
                }
                return $size;
        }
        //以下是一个实例
        $dir = 'F:\Web\www';//换成你自己的目录
        $size = dirSize($dir,false);
        $sizeRecursive = dirSize($dir);        
        if($size>=0){
                echo $dir.'的总容量为'.$sizeRecursive.'字节'.'不包含子目录及文件的容量为'.$size.'字节';
        }else{
                echo '目录'.$dir.'不存在或无法访问';
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?新建账号

×

手机版|轻松E站

GMT+8, 2024/11/21 16:36

快速回复 返回顶部 返回列表