跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

PHP实现递归循环每一个目录程序

要遍历一个文件夹里面的所有目录,列出里面所有的文件,PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。

代码如下复制代码class listdir{var $depth;var $dirname;var $list;var $tostring;function listdir($dir){$this->dirname=$dir;$this->depth=0;$this->tostring=”";}//把结果保存进多维数组function getlist($dir=”"){if($dir==”")$dir=$this->dirname;$d=@dir($dir);while(false!==($item=$d->read())){if($item!=”.”&&$item!=”..”){$path=$dir.”/”.$item;if(is_dir($path)){$this->depth+=1;$this->getlist($path);}else{$this->list[$this->depth][]=$item;}}}$this->list[$this->depth]['directory']=$dir;$this->depth-=1;$d->close();return $this->list;}//字符窜化结果PHP 8.5.5PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。下载function tostring($dir=”"){if($dir==”")$dir=$this->dirname;$d=@dir($dir);$this->tostring.=”n”;$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.=””.$item.”n”;}}}$this->depth-=1;$d->close();$this->tostring.=”n”;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);?>

相关文章