首页 > php文件操作 > php如何获取文件夹大小程序代码

php如何获取文件夹大小程序代码

本文章来告诉你php如何获取文件夹大小吧,我们递归列出文件然后再利用filesize来统计文件大小并显示出来,代码如下:

<?php 
//获取文件夹大小  
function dir_size($dir) {  
    if (!preg_match('#/$#', $dir)) {  
        $dir .= '/';  
    }  
    $totalsize = 0;  
    //调用文件列表  
    foreach (get_file_list($dir) as $name) {  
        $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") :  
            (int)@filesize($dir.$name));  
    }  
    return $totalsize;  
}  
   
//获取文件列表  
function get_file_list($path) {  
    $f = $d = array();  
    //获取所有文件  
    foreach (get_all_files($path) as $name) {  
        if (@is_dir($path.$name)) {  
            $d[] = $name;  
        } else if (@is_file($path.$name)) {  
            $f[] = $name;  
        }  
    }  
    natcasesort($d);  
    natcasesort($f);  
    return array_merge($d, $f);  
}  
   
//获取所有文件  
function get_all_files($path) {  
    $list = array();  
    if (($hndl = @opendir($path)) === false) {  
        return $list;  
    }  
    while (($file=readdir($hndl)) !== false) {  
        if ($file != '.' && $file != '..') {  
            $list[] = $file;  
        }  
    }  
    closedir($hndl);  
    return $list;  
}  
   
//转换单位  
function setupSize($fileSize) {  
    $size = sprintf("%u", $fileSize);  
    if($size == 0) {  
        return("0 Bytes");  
    }  
    $sizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");  
    return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i]; 
}  
   
//目录  
$path = './test_dir/';  
   
//显示文件列表  
print_r(get_file_list($path)).'<br>';  
   
//显示文件大小  
echo dir_size($path).'<br>';  
   
//显示转换过单位的大小  
echo setupSize(dir_size($path));  
?>

dir_size() 是获取文件夹大小的函数,函数中使用了递归的方法,此函数需要调用 get_file_list(),获取文件夹中的所有文件列表,如果文件列表中有文件夹存在,就调用 get_all_files() 获取文件夹下的文件列表,由此取得目标文件夹的大小。

setupSize() 是将传人的大小转换为易于读取的文件单位,可以转换成 Bytes, KB, MB, GB, TB, PB, EB, ZB, YB 等单位。

例2,代码如下:

<?php 
function getDirSize($dir) 
{  
    $handle = opendir($dir); 
    while (false!==($FolderOrFile = readdir($handle))) 
    {  
        if($FolderOrFile != "." && $FolderOrFile != "..")  
        {  
            if(is_dir("$dir/$FolderOrFile")) 
            {  
                $sizeResult += getDirSize("$dir/$FolderOrFile");  
            } 
            else 
            {  
                $sizeResult += filesize("$dir/$FolderOrFile");  
            } 
        }     
    } 
    closedir($handle); 
    return $sizeResult; 
} 
// 单位自动转换函数 
function getRealSize($size) 
{  
    $kb = 1024;         // Kilobyte 
    $mb = 1024 * $kb;   // Megabyte 
    $gb = 1024 * $mb;   // Gigabyte 
    $tb = 1024 * $gb;   // Terabyte 
     
    if($size < $kb) 
    {  
        return $size." B"; 
    } 
    else if($size < $mb) 
    {  
        return round($size/$kb,2)." KB"; 
    } 
    else if($size < $gb) 
    {  
        return round($size/$mb,2)." MB"; 
    } 
    else if($size < $tb) 
    {  
        return round($size/$gb,2)." GB"; 
    } 
    else 
    {  
        return round($size/$tb,2)." TB"; 
    } 
} 
echo getRealSize(getDirSize(dirname($_SERVER[SCRIPT_FILENAME])./include/)); 
?>

得到的结果是小数点后两位的,$big*1024 得到单位为KB

本文链接:http://www.phprm.com/wenjian/fs1071.html

收藏随意^^请保留教程地址.

标签:php获取 文件夹大小

相关文章

发表留言