php如何获取文件夹大小程序代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-05 22:40:12 浏览: 评论:0
本文章来告诉你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/));
- ?>
- #########################################################
- //function dirsize($dir)
- //{
- // $handle=opendir($dir);
- // $size = 0;
- // while ( $file=readdir($handle) )
- // {
- // if ( ( $file == "." ) || ( $file == ".." ) ) continue;
- // if ( is_dir("$dir/$file") )
- // $size += dirsize("$dir/$file");
- // else
- // $size += filesize("$dir/$file");
- // }
- // closedir($handle);
- // return $size;
- //}
- //$big=dirsize(dirname($_SERVER[SCRIPT_FILENAME])."/");
- //echo $big;
得到的结果是小数点后两位的,$big*1024 得到单位为KB
Tags: php获取 文件夹大小
- 上一篇:php中删除非空目录实现代码
- 下一篇:php 文件目录操作函数
相关文章
- ·php获取当前文件所有执行的函数和类(2013-11-12)
- ·php文件操作和获取文件信息数据 (2013-11-14)
- ·PHP 获取文件扩展名的方法(2013-11-29)
- ·php中获取文件后缀名多种方法(2014-01-16)
- ·php 获取目录下所有文件实现代码(2014-09-08)
- ·php获取文件扩展名(2014-09-10)
- ·PHP 获取远程文件大小常用方法总结(2014-09-13)
- ·PHP 获取文件目录权限函数fileperms介绍(2014-09-13)
- ·PHP获取文件扩展名的常用方法小结【五种方式】(2018-11-04)
- ·php获取文件大小的方法(2020-09-21)
- ·php获取文件名后缀常用方法小结(2021-05-14)
- ·PHP获取文件夹内文件数的方法(2021-05-16)
- ·php从给定url获取文件扩展名的方法(2021-05-16)
- ·php简单获取文件扩展名的方法(2021-05-18)
- ·php简单获取目录列表的方法(2021-05-18)
- ·PHP获取文件行数的方法(2021-05-28)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)