呵呵,忽然一个朋友问我如何删除目录,比如下面有文件呢,我说用递规呀,他说太慢了。于是就总结出了下面几种办法。 1。递规法://我提供,好像有点不对,没测试 deleteDir($dir) { if(rmdir($dir)==false&&is_dir($dir)){ if($dp=opendir($dir)){ while(($file=readdir($dp))!=false){ if(is_dir($file)&&$file!='.'&&$file!='..'){ deleteDir($file); }else{ unlink($file); } } closedir($dp); }else{ exit('Notpermission'); } } } 2。系统调用法//大师兄提供 functiondel_dir($dir) { if(strtoupper(substr(PHP_OS,3))=='WIN'){ $str="rmdir/s/q".$dir; }else{ $str="rm-Rf".$dir; } } 3。循环法//from:http://www.knowsky.com/1148.html functiondeltree($pathdir) { echo$pathdir;//我调试时用的 if(is_empty_dir($pathdir))//如果是空的 { rmdir($pathdir);//直接删除 } else {//否则读这个目录,除了.和..外 $d=dir($pathdir); while($a=$d->read()) { if(is_file($pathdir.'/'.$a)&&($a!='.')&&($a!='..')){unlink($pathdir.'/'.$a);} //如果是文件就直接删除 if(is_dir($pathdir.'/'.$a)&&($a!='.')&&($a!='..')) {//如果是目录 if(!is_empty_dir($pathdir.'/'.$a))//是否为空 {//如果不是,调用自身,不过是原来的路径+他下级的目录名 deltree($pathdir.'/'.$a); } if(is_empty_dir($pathdir.'/'.$a)) {//如果是空就直接删除 rmdir($pathdir.'/'.$a); } } } $d->close(); echo"必须先删除目录下的所有文件";//我调试时用的 } } functionis_empty_dir($pathdir) { //判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空 $d=opendir($pathdir); $i=0; while($a=readdir($d)) { $i++; } closedir($d); if($i>2){returnfalse;} elsereturntrue; } 呵呵,足够给各种朋友用了吧,只是按照你需要和速度来论吧。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|