rrmdir php中递归删除目录及目录下的文件
2011-05-15 00:00
941 查看
function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != “.” && $object != “..”) { if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/”.$object); else unlink($dir.”/”.$object); } } reset($objects); } }rmdir(PHP 4, PHP 5)rmdir ― 删除目录Report a bug 说明bool rmdir ( string $dirname )尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。成功时返回 TRUE, 或者在失败时返回 FALSE.Note: 自 PHP 5.0.0 起 rmdir() 也可用于某些 URL 封装协议。参见Supported Protocols and Wrappers 的列表看看 rmdir() 支持哪些 URL 封装协议。Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。有关 上下文(Context) 的说明参见 Stream 函数。Note: 当启用 安全模式时, PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID(所有者)。参见 mkdir() 和 unlink()。
<?php function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); } } reset($objects); rmdir($dir); } } ?>This isn't my code, but just thought I would share, since it took me so long to find. This is a function to delete a folder, all sub-folders, and files in one clean move.Just tell it what directory you want deleted, in relation to the page that this function is executed. Then set $empty = true if you want the folder just emptied, but not deleted. If you set $empty = false, or just simply leave it out, the given directory will be deleted, as well.<?phpfunction deleteAll($directory, $empty = false) {if(substr($directory,-1) == "/") {$directory = substr($directory,0,-1);}if(!file_exists($directory) || !is_dir($directory)) {return false;} elseif(!is_readable($directory)) {return false;} else {$directoryHandle = opendir($directory);while ($contents = readdir($directoryHandle)) {if($contents != '.' && $contents != '..') {$path = $directory . "/" . $contents;if(is_dir($path)) {deleteAll($path);} else {unlink($path);}}}closedir($directoryHandle);if($empty == false) {if(!rmdir($directory)) {return false;}}return true;}}?>[/code]A patch to previous script to make sure rights for deletion is set:
<?php//Delete folder functionfunction deleteDirectory($dir) {if (!file_exists($dir)) return true;if (!is_dir($dir) || is_link($dir)) return unlink($dir);foreach (scandir($dir) as $item) {if ($item == '.' || $item == '..') continue;if (!deleteDirectory($dir . "/" . $item)) {chmod($dir . "/" . $item, 0777);if (!deleteDirectory($dir . "/" . $item)) return false;};}return rmdir($dir);}?>更多说明可以参考 http://cn.php.net/rmdir
相关文章推荐
- rrmdir php中递归删除目录及目录下的文件
- php实例分享之通过递归实现删除目录下的所有文件详解
- php实例分享之通过递归实现删除目录下的所有文件详解
- php递归删除目录下的所有文件
- php学习笔记:利用递归实现删除文件目录
- php递归删除目录下的文件但保留的实例分享
- php中通过递归实现删除目录下的所有文件。
- PHP递归删除指定目录下的文件和目录
- PHP递归删除指定目录和目录下的文件
- php自定义函数之递归删除文件及目录
- PHP基础递归创建文件或删除文件目录
- PHP递归遍历目录,递归删除目录及文件
- php递归删除目录下的文件但保留的实例分享
- php自定义函数之递归删除文件及目录
- php利用递归实现删除文件目录的方法
- php递归删除目录与文件的方法
- php递归删除目录与文件的方法
- PHP 使用递归方法删除目录及目录下文件
- PHP删除指定目录中的所有目录及文件的方法