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 ?>