天天看点

递归删除非空文件夹

<?php
	header('Content-type:text/html;charset=utf-8');

	/**
	* 递归删除一个非空文件夹
	* @param string $fileName
	* @return bool 成功删除ture|删除失败false
	*/ 
	function delFiles($fileName){

		// 如果文件不存在 退出程序
		if(!file_exists($fileName)) return true;

		//如果不是目录,直接删除 
		if(!is_dir($fileName)){
			unlink($newFile);
			return true;
		}

		// 打开句柄资源
		$handle = opendir($fileName);

		// 读取.和..,过滤掉虚拟目录 重要,如果不过滤会删除服务器所有文件
		readdir($handle);
		readdir($handle);

		// 循环删除
		while($file = readdir($handle)){
			$newFile = $fileName.'/'.$file;

			// 如果是目录递归删除
			if(is_dir($newFile)){
				if(!delFiles($newFile)) return false;
			}else{
				unlink($newFile);
			}
		}

		// 关闭句柄资源,重要,如果不关闭会造成程序占用导致无法删除该目录 
		closedir($handle);

		// 删除目录
		if(!rmdir($fileName)) return false;
		return true;
	}

?>