zoukankan      html  css  js  c++  java
  • 使用php递归计算目录大小

      统计一个目录大小,因为不知道目录中子目录的深度,所以for循环很难实现,但是用递归调用很容易实现,只要统计出一个目录中所有文件的大小,那么每一次调用就可以了,随便建了个目录,建立一些文件,方法代码如下:

     1 function dirsize($dirname){
     2     static $sum=0;    //静态变量,防止每次递归置零
     3     $handle=opendir($dirname);
     4     while(($item=readdir($handle))!==false){
     5         if($item!='.'&&$item!='..'){
     6             if(is_file($dirname.'/'.$item)){
     7                 $sum+=filesize($dirname.'/'.$item);
     8             }
     9             if(is_dir($dirname.'/'.$item)){
    10                 //递归操作
    11                 $func=__FUNCTION__;
    12                 $func($dirname.'/'.$item);
    13                 //dirsize($dirname.'/'.$item);
    14             }
    15         }
    16     }
    17     closedir($handle);
    18     return $sum;
    19 }
    20 $filename='ssh';
    21 $arr=dirsize($filename);
    22 echo ($arr/1024).'KB';

    这样就可以统计目录大小了,定义保存目录大小变量的时候要定义静态的变量或者全局变量,整个程序运行过程中一直存在,防止每次递归置零

    注意目录'.'和'..'的处理,如果使用Linux那就再熟悉不过了

    重点部分就几句代码,判断是文件还是目录,是文件进行累加计算,否则递归调用。

  • 相关阅读:
    Linux学习路径 -- 1、文件目录操作命令
    第一次认识Postman
    接口测试的基础理论
    浅浅记录一哈HTTP接口
    Linux 的安装和使用
    QTP11 安装笔记:win10
    fiddler的下载安装与配置
    adb 下载安装
    maven 下载 安装 环境配置
    idea 2018.3.4安装破解
  • 原文地址:https://www.cnblogs.com/freeweb/p/4605712.html
Copyright © 2011-2022 走看看