<?php header("Content-type: text/html; charset=utf-8"); /** * 遍历目录,计算文件大小 * @prama $dir:文件夹路径 */ function getDirSize($dir) { file_exists($dir) or die(" 文件目录不存在!<br/>"); $handle = opendir($dir); $sizeResult = ""; $timeResult=array(); while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { $fileName=$dir.DIRECTORY_SEPARATOR.$FolderOrFile; //DIRECTORY_SEPARATORl显示系统分隔符。linux与windows上的分隔符是不一样的。 if(is_dir($fileName)) // 如果$fileName是一个目录,则继续循环下去,直到其不是目录为止 { $res=getDirSize($fileName); $sizeResult += $res['size']; $timeResult = array_merge($timeResult,$res['time']); } else { $sizeResult += filesize($fileName); //如果$fileName是一个文件,计算它的大小,累加。 $key = $fileName." : ".filesize($fileName); $timeResult[$key] = filectime($fileName); } } } $result=array('size'=>$sizeResult,'time'=>$timeResult); closedir($handle); return $result; } $dir = "/usr/local/lamp/apache2/htdocs/test"; $r1 = getDirSize($dir); $size=$r1['size']; echo "del前的目录大小为:".$r1['size'].'byte'.'<br>';//获取目录下文件总大小(单位:byte) echo "del前的文件为:<br>"; asort($r1['time']); foreach($r1['time'] as $key=>$value){ $str = $key." : ".$value; $arr = explode(" : ",$str); echo "文件名为: ".$arr[0]."---文件大小为: ".$arr[1]."---文件创建时间为:".$arr[2]."<br>"; //$arr[0]:fileName $arr[1]:fileSize $arr[2]:filecTime if($size>1024){ if(unlink($arr[0])){ $size -= $arr[1]; } } } $r2 = getDirSize($dir); $size=$r2['size']; asort($r2['time']); echo "del后的目录大小为:".$r2['size'].'byte'.'<br>';//获取目录下文件总大小(单位:byte) echo "删除后剩余文件为:"."<br>"; foreach($r2['time'] as $key=>$value){ $str = $key." : ".$value; $arr = explode(" : ",$str); echo "文件名为: ".$arr[0]."---文件大小为: ".$arr[1]."---文件创建时间为:".$arr[2]."<br>"; } ?>