本文实例讲述了php查找指定目录下指定大小文件的方法。分享给大家供大家参考。具体实现方法如下:
php查找文件大小的原理是遍历目录然后再利用filesize来计算文件大小,然后我们再加一判断就可以了,下面整理了一些例子.
我们先来看遍历目录,代码如下:
function tree($directory) <br />{ <br /> $mydir = dir($directory); <br /> echo "<ul>n"; <br /> while($file = $mydir->read()) <br /> { <br /> if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")) <br /> { <br /> echo "<li><font color="#ff00cc"><b>$file</b></font></li>n"; <br /> tree("$directory/$file"); <br /> } <br /> else <br /> echo "<li>$file</li>n"; <br /> } <br /> echo "</ul>n"; <br /> $mydir->close(); <br />} <br />//开始运行 <br /> <br />echo "<h2>目录为粉红色</h2><br>n"; <br />tree("./nowamagic");
这样只是把所有目录下的文件显示了,但我们要判断大小需加上round(filesize($cpath)/1024,1)函数了,这样我们获取大小之后就可以显示文件大小了,代码如下:
<?php <br />header("Content-Type:text/html;charset=gbk"); <br />set_time_limit(0); <br />$dirpath=dirname(__FILE__); <br />//bytes <br />$limitByte=1024*110; <br />//这里改成你合适的查找文件最低大小,单位为字节。1024*100表示 1024*100字节,即100KB <br />$arrRes=$arrTmp=array(); <br />showMaxFile($dirpath,$limitByte); <br />function showMaxFile($path,$limitByte){ <br />global $arrRes; <br />$h=opendir($path); <br />if($h){ <br />while (false !== ($file = readdir($h))) { <br />if($file!='.' && $file!='..'){ <br />$cpath=$path.'/'.$file;<i>本文@来#源gaodai$ma#com搞$$代**码网</i><strong>搞代gaodaima码</strong> <br />if(is_dir($cpath)){ <br />showMaxFile($cpath,$limitByte); <br />}else{ <br />if(filesize($cpath) > $limitByte){ <br />$arrRes[]=array($cpath,round(filesize($cpath)/1024,1)); <br />//echo "<p>{$cpath}<br />".(filesize($cpath) / 1024)."KB
“;
}
}
}
}
}
closedir($h);
}
foreach($arrRes as $k=>$v){
$arrTmp[$k]=$v[1];
}
arsort($arrTmp);
foreach($arrTmp as $k=>$v){
echo “
“.str_replace($dirpath,”,$arrRes[$k][0]).”
“.$arrRes[$k][1].”
“;
}
?>
最后给大家附一个字节计算函数,这个可以转换,代码如下:
//字节数转换成带单位的 <br />/* 原理是利用对数求出欲转换的字节数是1024的几次方。 <br /> * 其实就是利用对数的特性确定单位。 <br />*/ <br />function size2mb($size,$digits=2){ //digits,要保留几位小数 <br /> $unit= array('','K','M','G','T','P');//单位数组,是必须1024进制依次的哦。 <br /> $base= 1024;//对数的基数 <br /> $i = floor(log($size,$base));//字节数对1024取对数,值向下取整。 <br /> return round($size/pow($base,$i),$digits).' '.$unit[$i] . 'B'; <br />}
希望本文所述对大家的PHP程序设计有所帮助。