rrmdir php中递归删除目录及目录下的文件_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
(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.

复制代码 代码如下:

<?php
function 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 function
function 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

时间: 2024-10-27 04:02:51

rrmdir php中递归删除目录及目录下的文件_php技巧的相关文章

php删除目录及目录下所有文件子目录

//php删除目录及目录下所有文件子目录 /* 本款函数是一款利用递归来一步步删除目录下文件与当前目录所有子目录哦,不管目录为不为空都可以删除, */ set_time_limit(0); $filenum=0; function deldir($dir){  global $filenum;  $dh=opendir($dir);  while ($file=readdir($dh)){   if($file!="."&&$file!=".."){

PHP unlink与rmdir删除目录及目录下所有文件

函数代码:仅删除指定目录下的文件,不删除目录文件夹.  代码如下 复制代码 class shanchu { //循环目录下的所有文件 function delFileUnderDir( $dirName="../Smarty/templates/templates_c" ) { if ( $handle = opendir( "$dirName" ) ) { while ( false !== ( $item = readdir( $handle ) ) ) { i

PHP删除目录及目录下所有文件的方法详解_php技巧

函数代码一:删除目录及目录下的所有文件 复制代码 代码如下: //循环删除目录和文件函数function delDirAndFile( $dirName ){if ( $handle = opendir( "$dirName" ) ) {while ( false !== ( $item = readdir( $handle ) ) ) {if ( $item != "." && $item != ".." ) {if ( is_

PHP 遍历XP文件夹下所有文件_php技巧

复制代码 代码如下: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php //PHP遍历文件夹下所有文件 $handle=opendir('C:\\'); //我要遍历C盘的文件 echo "目录 handle: $handle <br/>"; echo "文件: <br/>"; whi

删除目录及目录下所有文件

/  代码如下 复制代码  function del_dir($dir_adds='',$del_def=0) {      $result = false;      if(! is_dir($dir_adds)){          return false;      }      $handle = opendir($dir_adds);      while(($file = readdir($handle)) !== false){          if($file != '.'

三种php删除指定目录下所有文件与目录

 代码如下 复制代码 function DeltreeDir($dir)  { $dir = realpath($dir);         if (!$dir || !@is_dir($dir))                 return 0;         $handle = @opendir($dir);         if ($dir[strlen($dir) - 1] != DIRECTORY_SEPARATOR)                 $dir .= DIRECTO

目录名称-递归遍历指定目录下的所有文件,依次按目录的名称与文件的名称排序

问题描述 递归遍历指定目录下的所有文件,依次按目录的名称与文件的名称排序 递归遍历指定目录下的所有文件,按依次按目录的名称与文件排序, 首先同一级目录的按目录名称排序,然后按文件的名称排序. 思路一:递归获取到所有文件后,根据件的全路径作在比较器中比较排序(file0.getAbsolutePath().compareTo(file1.getAbsolutePath())),这样可能不会很准.. 求大神支招啊! 想要的排序结果如下: d:/update/spc333/1/aa.txt d:/up

PHP不用递归遍历目录下所有文件的代码_php实例

实现代码: /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码_php技巧

web 开发中我们可能会碰到需要将某个目录下的所有文件清空,但不删除这个目录下的子目录(当然也不会删除被删除的根目录)的情况.那么对于这种只删除文件而不删除目录的方法,你是如何处理的呢?下面博主将要和你分享一下对于这个问题的一种比较好的解决办法.看下面这个函数: /*删除指定目录下的文件,不删除目录文件夹*/ function delFile($dirName){ if(file_exists($dirName) && $handle=opendir($dirName)){ while(f