«
用PHP程序实现删除目录的三种方法实例

时间:2008-5-31    作者:Deri    分类: 分享


   <p>  1。递规法: //没测试</p><code>deleteDir($dir)<br />{<br />if (rmdir($dir)==false && is_dir($dir)) {<br /> if ($dp = opendir($dir)) {<br />  while (($file=readdir($dp)) != false) {<br />  if (is_dir($file) && $file!='.' && $file!='..') {<br />   deleteDir($file);<br />  } else {<br />   unlink($file);<br />  }<br />  }<br />  closedir($dp);<br /> } else {<br />  exit('Not permission');<br /> }<br />}<br />}</code><p>  2。系统调用法</p><code>function del_dir($dir)<br />{<br />if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {<br />   $str = "rmdir /s/q " . $dir;<br />} else {<br />   $str = "rm -Rf " . $dir;<br />}<br />}</code><p>  3。循环法 from webjx.com</p><code>function deltree($pathdir)<br />{<br />echo $pathdir;//我调试时用的<br />if(is_empty_dir($pathdir))//如果是空的<br />  {<br />  rmdir($pathdir);//直接删除<br />  }<br />  else<br />  {//否则读这个目录,除了.和..外<br />    $d=dir($pathdir);<br />    while($a=$d->read())<br />    {<br />    if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}<br />    //如果是文件就直接删除<br />    if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))<br />    {//如果是目录<br />      if(!is_empty_dir($pathdir.'/'.$a))//是否为空<br />      {//如果不是,调用自身,不过是原来的路径+他下级的目录名<br />      deltree($pathdir.'/'.$a);<br />      }<br />      if(is_empty_dir($pathdir.'/'.$a))<br />      {//如果是空就直接删除<br />      rmdir($pathdir.'/'.$a);<br />      }<br />    }<br />    }<br />    $d->close();     <br />  echo "必须先删除目录下的所有文件";//我调试时用的<br />  }<br />}<br />function is_empty_dir($pathdir)<br />{<br />//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空<br />$d=opendir($pathdir);<br />$i=0;<br />  while($a=readdir($d))<br />  {<br />  $i++;<br />  }<br />closedir($d);<br />if($i>2){return false;}<br />else return true;<br />}</code></p>