今天,老师给我们讲了递归函数!下面是建立文件上传下载对文件的一些操作,这些操作使用了递归函数。
一、统计目录的大小
<?php
function dirSize($directory){
$dir_size=0;
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="."&&$filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile))
$dir_size+=dirSize($subFile);
if(is_file($subFile))
$dir_size+=filesize($subFile);
}
}
closedir($dir_handle);
return $dir_size;
}
}
$dir_size=dirSize("phpmyweb");
echo round($dir_size/pow(1024,1),2)."KB";
?>
二、建立和删除目录
<?php
function delDir($directory){
if(file_exists($directory)){
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="." && $filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile)) delDir($subFile);
if(is_file($subFile) unlink($subFile);
}
}
closedir($dir_handle);
rmdir($directory);
}
}
}
delDir("E:\wamp\www\PHP");
?>
三、复制或移动目录
<?php
function copyDir($dirSrc,$dirTo){
if(is_file($dirTo)){
echo "目标不是目录不能创建!";
return;
}
if(!file_exists($dirTo)){
mkdir($dirTo);
}
if($dir_handle=@opendir($dirSrc){
while($filename=readdir($dir_handle)){
if($filename!="." && $filename!=".."){
$subSrcFile=$dirSrc."/".$filename;
$subToFile=$dirTo."/".$filename;
if(is_dir($subSrcFile)) copyDir($subSrcFile,$subToFile);
if(is_file($subSrcFile) copy($subSrcFile,$subToFile);
}
}
closedir($dir_handle);
}
}
copyDir("E:\wamp\www\PHP","D:\PHP");
?>
递归的用处很多可以见到,在程序里起着很重要的作用。只要掌握了递归的思路,其它的也一样