php递归删除非空目录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41179401/article/details/84248648

                                      php递归删除非空目录

第一种:

<?php
$dir = dirname(__FILE__).'/test';  //要删除的非空目录
delFile($dir);                     //执行删除函数
function delFile($dir){
	$handle = @opendir($dir);
	// 如果整个目录为空直接删除
	if(is_empty_dir($dir)){
		@rmdir($dir);
	}else{
		while(!!$file = @readdir($handle)){
			if($file!='.' && $file!='..'){
				// 如果是目录判断是否为空 为空则直接删除
				if(filetype($dir.'/'.$file)=='dir'){
					if(is_empty_dir($dir.'/'.$file)){
						@rmdir($dir.'/'.$file);
						// 删除目录后判断父目录是否为空 为空则删除
						if(is_empty_dir($dir)){
							@rmdir($dir);
						}
				// 如果目录不为空则递归 删除文件
					}else{
						delFile($dir.'/'.$file);
					}
					// 如果是文件 直接删除
				}else{
					unlink($dir.'/'.$file);
					// 删除文件后判断父目录是否为空 为空则删除
					if(is_empty_dir($dir)){
						@rmdir($dir);
					}
				}
			}
		}
	}
}

//判断目录是否为空,true为空,false为不空
function is_empty_dir($fp){
	$H = @ opendir($fp);
	$i = 0;
	while($_file = @readdir($H)){
		// 如果是空的 则只有'.'和'..'两个目录
		$i++;  //$i>2 说明有其他目录 则不为空
	}
	@closedir($H);
	if($i > 2){
		return false;
	}else{
		return true;
	}
}
?>

 第二种:

<?php
$dir = dirname(__FILE__).'/test';  //要删除的非空目录
delDir($dir);                      //调用delDir函数
function delDir($dir){     
    if(file_exists($dir)){         //判断目录是否存在
        if($dir_handle = @opendir($dir)){  
            //打开目录返回目录资源,并判断是否成功
            while($filename = readdir($dir_handle)){
            //遍历目录,读出目录中的文件或目录
                if($filename!='.' && $filename!='..'){
            //一定要排除两个特殊的目录
                    $subFile = $dir."/".$filename;
            //将目录下的文件与当前目录相连
                    if(is_dir($subFile)){    //如果是目录
                        delDir($subFile);    //递归调用自己删除子文件
                    }
                    if(is_file($subFile)){   //如果是文件条件
                        unlink($subFile);    //直接删除这个文件
                    }
                }
            }
            closedir($dir_handle);  //关闭目录资源
            rmdir($dir);            //删除空目录
        }
    }
}

?>

猜你喜欢

转载自blog.csdn.net/qq_41179401/article/details/84248648
今日推荐