PHP删除文件与文件夹的两种方法

时间:2017-07-27
php删除指定目录下的文件夹和文件-用PHP怎么删除某目录下指定的一个文件夹和文件?本文章向大家介绍PHP删除文件与文件夹的几种方法,需要的朋友可以参考一下。

有时候我们需要用PHP来删除文件和文件夹,PHP本来也都有函数可以实现,下面简单记录一下代码,方便以后信守拈来。先看一下代码

/**
 * 删除目录及目录下所有文件或删除指定文件
 * @param str $path   待删除目录路径
 * @param int $delDir 是否删除目录,1或true删除目录,0或false则只删除文件保留目录(包含子目录)
 * @return bool 返回删除状态
 */
function delDirAndFile($path, $delDir = FALSE) {
    $handle = opendir($path);
    if ($handle) {
        while (false !== ( $item = readdir($handle) )) {
            if ($item != "." && $item != "..")
                is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
        }
        closedir($handle);
        if ($delDir)
            return rmdir($path);
    }else {
        if (file_exists($path)) {
            return unlink($path);
        } else {
            return FALSE;
        }
    }
}
在看一个函数:
<?php
    $dir = '你要删除的目录路径';    //如下:
    //$dir = $_SERVER['DOCUMENT_ROOT'].'/cache';
    rmdirs($dir);

    //php删除指定目录下的的文件-用PHP怎么删除某目录下指定的一个文件?
    function rmdirs($dir){
        //error_reporting(0);    函数会返回一个状态,我用error_reporting(0)屏蔽掉输出
        //rmdir函数会返回一个状态,我用@屏蔽掉输出
        $dir_arr = scandir($dir);
        foreach($dir_arr as $key=>$val){
            if($val == '.' || $val == '..'){}
            else {
                if(is_dir($dir.'/'.$val))    
                {                            
                    if(@rmdir($dir.'/'.$val) == 'true'){}    //去掉@您看看                
                    else
                    rmdirs($dir.'/'.$val);                    
                }
                else                
                unlink($dir.'/'.$val);
            }
        }
    }    
?>
<?
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;
  }
}

?>

unlink() 函数用于删除文件。若成功,则返回 true,失败则返回 false。rmdir() 函数用于删除空的目录。它尝试删除 dir 所指定的目录。 该目录必须是空的,而且要有相应的权限。

一个实例:删除某个文件夹下的所有".svn"文件夹(包括其内容也要被删除)。

<?php
function delsvn($dir) {
  $dh=opendir($dir);
  //找出所有".svn" 的文件夹:
  while ($file=readdir($dh)) {
    if($file!="." && $file!="..") {
      $fullpath=$dir."/".$file;
      if(is_dir($fullpath)) {
            if($file==".svn"){
                delsvndir($fullpath);
            }else{
                delsvn($fullpath);
            }
      }
    }
  }
 
  closedir($dh);

}

function delsvndir($svndir){
    //先删除目录下的文件:
    $dh=opendir($svndir);
    while($file=readdir($dh)){
        if($file!="."&&$file!=".."){
            $fullpath=$svndir."/".$file;
            if(is_dir($fullpath)){
                delsvndir($fullpath);
            }else{
                unlink($fullpath);
            }
        }
        
    }
    closedir($dh);
    //删除目录文件夹
    if(rmdir($svndir)){
        return  true;
    }else{
        return false;
    }
    
}


$dir=dirname(__FILE__);
//echo $dir;
delsvn($dir);

?>