站长论坛

标题: 用PHP程序实现删除目录的三种方法实例 [打印本页]

作者: sunhw0725    时间: 2007-10-5 15:05
标题: 用PHP程序实现删除目录的三种方法实例
1。递规法: //没测试
  1. deleteDir($dir)
  2. {
  3. if (rmdir($dir)==false && is_dir($dir)) {
  4.   if ($dp = opendir($dir)) {
  5.    while (($file=readdir($dp)) != false) {
  6.     if (is_dir($file) && $file!='.' && $file!='..') {
  7.      deleteDir($file);
  8.     } else {
  9.      unlink($file);
  10.     }
  11.    }
  12.    closedir($dp);
  13.   } else {
  14.    exit('Not permission');
  15.   }
  16. }
  17. }
复制代码
2。系统调用法
  1. function del_dir($dir)
  2. {
  3. if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
  4.      $str = "rmdir /s/q " . $dir;
  5. } else {
  6.      $str = "rm -Rf " . $dir;
  7. }
  8. }
复制代码
3。循环法 from webjx.com
  1. function deltree($pathdir)
  2. {
  3. echo $pathdir;//我调试时用的
  4. if(is_empty_dir($pathdir))//如果是空的
  5.     {
  6.     rmdir($pathdir);//直接删除
  7.     }
  8.     else
  9.     {//否则读这个目录,除了.和..外
  10.         $d=dir($pathdir);
  11.         while($a=$d->read())
  12.         {
  13.         if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}

  14.        //如果是文件就直接删除
  15.         if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))
  16.         {//如果是目录
  17.             if(!is_empty_dir($pathdir.'/'.$a))//是否为空
  18.             {//如果不是,调用自身,不过是原来的路径+他下级的目录名
  19.             deltree($pathdir.'/'.$a);
  20.             }
  21.             if(is_empty_dir($pathdir.'/'.$a))
  22.             {//如果是空就直接删除
  23.             rmdir($pathdir.'/'.$a);
  24.             }
  25.         }
  26.         }
  27.         $d->close();         
  28.     echo "必须先删除目录下的所有文件";//我调试时用的
  29.     }
  30. }
  31. function is_empty_dir($pathdir)
  32. {
  33. //判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空
  34. $d=opendir($pathdir);
  35. $i=0;
  36.     while($a=readdir($d))
  37.     {
  38.     $i++;
  39.     }
  40. closedir($d);
  41. if($i>2){return false;}
  42. else return true;
  43. }
复制代码





欢迎光临 站长论坛 (http://tzlink.com/bbs/) Powered by Discuz! X3.2