Function RmDirFile($DirName)
{$nResult = 1;
if(is_dir($DirName))      //Dir sc is exist?    {      $handle = opendir($DirName);      while($file = readdir($handle))      {        if($file != ".." && $file != "." )        {          $nDelete = unlink($DirName."/".$file);          if($nDelete)            print("File : ".$DirName.$file ." Has been delete<br>");          else          {            $pathName=$DirName."/".$file;            $nResult = 0;            print("File : ".$DirName.$file ." Has not been delete<br>");            RmDirFile($pathName);          }        }      }      closedir($handle);      $nRmdir = rmdir($DirName);      if($nRmdir)        print("Dir : ".$DirName." Has been delete<br>");      else      {        $nResult = 0;        print("Dir : ".$DirName." Has not been delete<br>");      }    }else{        $nResult = 0;        print("<br>Dir($DirName) is not a dir,is_dir=*".is_dir($DirName)."*");    }    return $nResult;  }/**************************删除文件夹和它里面的文件*************************/   $DirName="../temp1"; RmDirFile($DirName);?>
你看我的这个怎么样!!

解决方案 »

  1.   

    是有些奇怪,有时能用,有时不行.各位大侠赶快研究一下吧.
    主要问题就是is_dir上面,我试了试:
    if(is_dir('aaa'))
        echo 'yes';
    else
        echo 'no';
    有些文件夹没问题,有些就是"Warning: stat failed for aaa (errno=2 - No such file or directory) in g:\web\try.php on line 3",但明明这些文家夹都是存在的!
    还有上面有个错误,closedir($path)应该改成closedir($fp).
      

  2.   

    ping_0818(皮皮) 大侠的也会出同样的问题,怎么回事?
      

  3.   

    我又测了一边。没有问题!但是权限一定要够!$DirName="../temp1";(输入倪要删除的目录名就行)RmDirFile($DirName);
      

  4.   

    我也感到奇怪,不是你程序的问题,是is_dir的问题,我在windows下有时不行(只是很少时候),然后传到服务器上,也偶尔有这个问题。不懂
      

  5.   

    有它是试!
    function deltree($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 "必须先删除目录下的所有文件";//我调试时用的}}function is_empty_dir($pathdir)
    {//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空,PHP有没有给出什么函数?
    $d=opendir($pathdir);
    $i=0;
    while($a=readdir($d))
    {
    $i++;
    }
    closedir($d);
    if($i>2){return false;}
    else return true;
    }