php实现统计目录文件大小的函数


Posted in PHP onDecember 25, 2015

早上刚到公司,头告诉我,抓紧写一个小函数,用来统计指定目录中文件大小,我了个去,动手吧,还好有点小基础,一会就完工了,哈哈。代码在下面咯。

<? 
/** 
 统计目录文件大小的函数 
 @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;
 }
?>
PHP 相关文章推荐
基于PHP与XML的PDF文档生成技术
Oct 09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
详解Window7 下开发php扩展
Dec 31 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 #PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 #PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 #PHP
PHP实现文件上传和多文件上传
Dec 24 #PHP
纯PHP代码实现支付宝批量付款
Dec 24 #PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 #PHP
4种PHP异步执行的常用方式
Dec 24 #PHP
You might like
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php单例模式实现方法分析
2015/03/14 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
Vue header组件开发详解
2018/01/26 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
如何利用python查找电脑文件
2018/04/27 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
python pygame实现方向键控制小球
2019/05/17 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
考试没考好检讨书
2014/01/31 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
退休欢送会主持词
2015/07/01 职场文书
《花钟》教学反思
2016/02/17 职场文书