Maison >développement back-end >tutoriel php >PHP实现递归循环每一个目录程序_PHP教程
要遍历一个文件夹里面的所有目录,列出里面所有的文件,PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。
代码如下 | 复制代码 |
class listdir{ function listdir($dir){ //把结果保存进多维数组 //字符窜化结果 function tostring($dir=”"){
$this->tostring.=”Directory:”.$dir.”n”; while(false!==($item=$d->read())) { if($item!=”.”&&$item!=”..”) { $path=$dir.”/”.$item; if(is_dir($path)){ $this->depth+=1; $this->tostring($path); }else{ $this->tostring.=” } } } $this->depth-=1; $d->close(); $this->tostring.=” return $this->tostring; } } $wapdir=”jquery”; $d=new listdir($wapdir); echo $d->tostring(); ?> |
要删除一个空的目录很简单~一个
rmdir() 函数就可以搞定,但是要删除一个非空目录,将不能进行快速的删除,必须先将目录中文件删除,但是目录里可能还会有子目录所以要进行递归删除~下面是我的例子~
代码如下 | 复制代码 |
function deletedir($dir){ if(!handle=@opendir($dir)){ //检测要打开目录是否存在 die("没有该目录"); } while(false !==($file=readdir($handle))){ if($file!=="."&&$file!==".."){ //排除当前目录与父级目录 $file=$dir .DIRECTORY_SEPARATOR. $file; if(is_dir($file)){ deletedir($file); }else{ if(@unlink($file)){ echo "文件$file删除成功。 "; }else{ echo "文件$file删除失败! "; } } } if(@rmdir($dir)){ echo "目录$dir删除成功了。 n"; }else{ echo "目录$dir删除失败! n"; } } //测试程序 $dir="/var/www/test"; deletedir($dir); ?> |