Home >Backend Development >PHP Tutorial > 怎么删除目录上的所有文件(保留最下阶目录)

怎么删除目录上的所有文件(保留最下阶目录)

WBOY
WBOYOriginal
2016-06-13 13:09:231402browse

如何删除目录下的所有文件(保留最上阶目录)
我想删除一个目录下的目录及文件,但保留最上阶目录. 如何说, 要删除/upload/下的所有目录及文件,但保留/upload目录.
下面函数会把/upload目录也删除

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->function delDir($dir) {
    //先删除目录下的文件:
    $dh=opendir($dir);
    while ($file=readdir($dh)) {
        if($file!="." && $file!="..") {
            $fullpath=$dir."/".$file;
            if(!is_dir($fullpath)) {
                unlink($fullpath);
            } else {
                delDir($fullpath);
            }
        }
    }

    closedir($dh);
    //删除当前文件夹:
    if(rmdir($dir)) {
        return true;
    } else {
        return false;
    }
}


------解决方案--------------------
注释上有写:
PHP code
//删除当前文件夹:
/*    if(rmdir($dir)) {
        return true;
    } else {
        return false;
    }
*/
<br><font color="#e78608">------解决方案--------------------</font><br>
PHP code
function delDir($dir) {
    //先删除目录下的文件:
    $dh=opendir($dir);
    while ($file=readdir($dh)) {
        if($file!="." && $file!="..") {
            $fullpath=$dir."/".$file;
            if(!is_dir($fullpath)) {
                unlink($fullpath);
            } else {
                delDir($fullpath);
            }
        }
    }

    closedir($dh);

}
<br><font color="#e78608">------解决方案--------------------</font><br>
PHP code
function delDir($dir) {
  $t = array();
  $dh = opendir($dir);
  while ($file=readdir($dh)) {
    if($file!="." && $file!="..") {
      $fullpath=$dir."/".$file;
      if(!is_dir($fullpath)) {
        unlink($fullpath);
      } else {
        delDir($fullpath);
        $t[] = $fullpath;//由于目录被占用,不能删除。保存起来
      }
    }
  }
  closedir($dh);
  if($t) array_map('rmdir', $t);//删除所有的子目录
}
<br><font color="#e78608">------解决方案--------------------</font><br>或者在删除目录的时候 判断 是不是upload 是的话不删除
<br><font color="#e78608">------解决方案--------------------</font><br>在你原函数中<br>           } else {<br>               delDir($fullpath);//这里并没有承接delDir的返回值<br>           }<br>返回是没有意义的。所以我没有书写返回<br><br>如需要返回要这样做
PHP code
function delDir($dir) {
  $t = array();
  $r = true;
  $dh = opendir($dir);
  while ($file=readdir($dh)) {
    if($file!="." && $file!="..") {
      $fullpath=$dir."/".$file;
      if(!is_dir($fullpath)) {
        unlink($fullpath);
      } else {
        $r &= delDir($fullpath);
        $t[] = $fullpath;//由于目录被占用,不能删除。保存起来
      }
    }
  }
  closedir($dh);
  if($t) foreach($t as $f) $r &= rmdir($f);//删除所有的子目录
  return $r;
} <div class="clear">
                 
              
              
        
            </div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn