php实现统计目录文件大小的函数
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-01 16:52:18 浏览: 评论:0
本文给大家介绍了使用php实现统计目录文件大小的函数,其主要的思路是通过递归遍历目录中的所有文件从而计算出文件总大小的,有需要的小伙伴可以参考下。
早上刚到公司,头告诉我,抓紧写一个小函数,用来统计指定目录中文件大小,我了个去,动手吧,还好有点小基础,一会就完工了,哈哈。代码在下面咯。
- <?
 - /**
 - 统计目录文件大小的函数
 - @author xfcode
 - */
 - function dirsize($dir)
 - {
 - @$dh = opendir($dir);
 - $size = 0;
 - while ($file = @readdir($dh))
 - {
 - if ($file != "." and $file != "..")
 - {
 - $path = $dir."/".$file;
 - if (is_dir($path))
 - {
 - $size += dirsize($path);
 - }
 - elseif (is_file($path))
 - {
 - $size += filesize($path);
 - }
 - }
 - }
 - @closedir($dh);
 - return $size;
 - }
 - //function end
 - //eg:
 - $dir_path = "./my_files";
 - $dir_size = dirsize($dir_path);
 - $dir_size = $dir_size/1024/1024;
 - echo $dir_size."MB";
 - ?>
 
这个函数可以递归遍历目录中的所有文件,并计算以MB为单位的文件总大小。
下面我们再来看个代码
- <?php
 - #循环遍历目录中所有的文件,并统计目录和文件的大小
 - $dirName="phpMyAdmin";
 - $dir=opendir($dirName); #返回一个资源类型
 - while($fileName=readdir($dir)){
 - $file=$dirName."/".$fileName;
 - if($fileName!="." && $fileName!=".."){
 - if(is_dir($file)){
 - echo "<font color='red'>".$fileName."===".date("Y-m-d H:i:s",filectime($file))."==".filetype($file)."==".toSize(dirSize($file))."</font><br/>";
 - }
 - else{
 - echo "<font color='green'>".$fileName."=====".date("Y-m-d H:i:s",filectime($file))."====".filetype($file)."====".toSize(filesize($file))."</font><br/>";
 - }
 - }
 - }
 - closedir($dir);
 - #把文件或目录的大小转化为容易读的方式
 - function toSize($size){
 - $dw; #指定文件或目录统计的单位方式
 - if($size>pow(2,30)){
 - $dw="GB";
 - $size=round($size/pow(2,30),2);
 - }
 - else if($size>pow(2,20)){
 - $dw="MB";
 - $size=round($size/pow(2,20),2);
 - }
 - else if($size>pow(2,10)){
 - $dw="KB";
 - $size=round($size/pow(2,10),2);
 - }
 - else
 - {
 - $dw="bytes";
 - }
 - return $size.$dw;
 - }
 - #利用递归的方式统计目录的大小
 - function dirSize($dirName){
 - $dirsize=0;
 - $dir=opendir($dirName);
 - while($fileName=readdir($dir)){
 - $file=$dirName."/".$fileName;
 - if($fileName!="." && $fileName!=".."){ //一定要进行判断,否则会出现错误的
 - if(is_dir($file)){
 - $dirsize+=dirSize($file);
 - }
 - else{
 - $dirsize+=filesize($file);
 - }
 - }
 - }
 - closedir($dir);
 - return $dirsize;
 - }
 - ?>
 
Tags: php目录文件大小
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
