php文件遍历类:FileBianli.class.php

本文介绍了一个使用PHP实现的目录遍历脚本,该脚本能递归地列出指定目录下所有文件及其大小,并计算目录总大小。脚本通过递归函数处理子目录,并采用不同颜色标记文件类型。
 1 <?php
 2 
 3     class FileBianli{
 4         private $dirname;  
 5         private $dirsize=0;
 6         private $totalsize=0;//当前目录大小
 7         
 8         
 9         function bianliDir($dirname){
10 
11             $dir=opendir($dirname);
12 
13             while($fileName=readdir($dir)){
14                 if($fileName!="." && $fileName!=".."){
15                     $file=$dirname.'/'.$fileName;
16                     if(is_dir($file)){
17                         echo "<font color='red'>".$fileName."-".date("Y-m-d H:i:s")."-".filetype($file)."-".$this->toSize($this->dirsize($file))."-</font><br>";
18                         $totalsize+=$this->dirsize($file);
19                     }else{
20                         echo "<font color='blue'>".$fileName."-".date("Y-m-d H:i:s")."-".filetype($file)."-".$this->toSize(filesize($file))."-</font><br>";
21                         $totalsize+=filesize($file);
22                     }
23                 }
24             }
25             closedir($dir);
26             echo $dirname."共计大小为:".$this->toSize($totalsize)."<br>";
27             return true;
28         }
29 
30         
31         //将字节转换成GB,MB,KB,BYTE
32         function toSize($size){
33             $dw="Bytes";
34             if($size > pow(2,30)){
35                 $size=round($size/pow(2,30),2);
36                 $dw="GB";
37             }else if($size > pow(2,20)){
38                 $size=round($size/pow(2,20),2);
39                 $dw="MB";
40             }else if($size > pow(2,10)){
41                 $size=round($size/pow(2,10),2);
42                 $dw="KB";
43             }else{
44                 $dw="bytes";
45             }
46             return $size.$dw;
47             
48         }
49         
      //计算目录的大小 50 function dirsize($dirname){ 51 52 $dir=opendir($dirname); 53 54 while($filename=readdir($dir)){ 55 $file=$dirname."/".$filename; 56 if($filename!="." && $filename!=".."){ 57 if(is_dir($file)){ 58 $this->dirsize($file);//递归完成 59 }else{ 60 $dirsize+=filesize($file); 61 } 62 } 63 } 64 65 closedir($dir); 66 return $dirsize; 67 } 68 } 69 ?>

 

转载于:https://www.cnblogs.com/yiluxiuxing/p/4069696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值