您的位置:首页 > 编程语言 > PHP开发

获取文件夹大小并且显示为易于读取的文件单位

2007-08-19 18:05 405 查看
在获取文件夹中的包含文件时使用了递归的方法,依次取得下级文件和文件夹的大小,然后将返回的大小格式化为易于读取的单位。

 


<?php // 说明: 获取文件夹大小并且显示为易于读取的文件单位 // 整理:http://www.CodeBit.cn  //获取文件夹大小 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 等单位。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  path file list merge php
相关文章推荐