获取文件夹大小并且显示为易于读取的文件单位
2007-08-19 18:05
405 查看
在获取文件夹中的包含文件时使用了递归的方法,依次取得下级文件和文件夹的大小,然后将返回的大小格式化为易于读取的单位。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<?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 等单位。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<?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 等单位。
相关文章推荐
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- [转]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- 关于Android查询本地视频文件、获取缩略图,并且让缩略图以相同大小显示、给缩略图添加白色边框效果
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)