您好,欢迎访问一九零五行业门户网

PHP递归删除文件与目录函数_PHP教程

在php中删除文件与目录rmdir()函数就可以搞定,但是要删除一个非空目录,将不能进行快速的删除,必须先将目录中文件删除,但是目录里可能还会有子目录所以要进行php递归删除目录
递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。
我们来看一个经典的递归删除函数
函数的作用:删除目录下面的所有文件,并删除目录
函数代码:
 代码如下 复制代码
使用实例:public是一个文件夹,里面有许多文件夹和文件,调用deldir($dirname)把它删除
说明:首先判断public是否存在,如果在则打开public,然后使用readdir循环读取public目录里的内容,如果存在.和..这两个特殊目录则排除掉。如果遇到文件夹则调用自身处理,直到条件不满足。遇到文件则直接删除掉。最后层层跳出删除public。
实例二,删除非空目录
 代码如下 复制代码
/*
 自定义的删除函数,可以删除文件和递归删除文件夹
*/
 function my_del($path)
{
 if(is_dir($path))
 {
   $file_list= scandir($path);
   foreach ($file_list as $file)
   {
    if( $file!='.' && $file!='..')
    {
     my_del($path.'/'.$file);
    }
   }
   @rmdir($path);  //这种方法不用判断文件夹是否为空, 因为不管开始时文件夹是否为空,到达这里的时候,都是空的  
 }
 else
 {
  @unlink($path);    //这两个地方最好还是要用@屏蔽一下warning错误,看着闹心
 }
}
$path='d:/技术文档 - 副本';    //要删除的文件夹
//如果php文件不是ansi,而是utf-8模式,而且要删除的文件夹中包含汉字字符的话,调用函数前需要转码
//$path=iconv( 'utf-8', 'gb2312',$path );
my_del($path);
例3,可查看成功之失败原因
 代码如下 复制代码
functiondeletedir($dir){   
if(!handle=@opendir($dir)){//检测要打开目录是否存在   
die(没有该目录);   
}   
while(false!==($file=readdir($handle))){   
if($file!==.&&$file!==..){//排除当前目录与父级目录   
$file=$dir.directory_separator.$file;   
if(is_dir($file)){   
deletedir($file);   
}else{   
if(@unlink($file)){   
echo文件$file删除成功。
;   
}else{   
echo文件$file删除失败!
;   
}   
}   
}   
if(@rmdir($dir)){   
echo目录$dir删除成功了。
n;   
}else{   
echo目录$dir删除失败!
n;   
}   
}
//测试程序   
$dir=/var/www/test;   
deletedir($dir);   
?>
在/var/www/test文件夹下建一写文件夹和文件测试   
shell>touchaaa   
shell>touchbbb   
shell>touchccc   
shell>toucheee   
shell>touchffff   
shell>mkdir111   
shell>mkdir222   
shell>mkdir333   
分别再在111,222,333文件夹下建写文件这里就不多说了,然后给他们权限   
shell>chown[url]www.www[/url]test-r
http://www.bkjia.com/phpjc/632793.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/632793.htmltecharticle在php中删除文件与目录rmdir()函数就可以搞定,但是要删除一个非空目录,将不能进行快速的删除,必须先将目录中文件删除,但是目录里可...
其它类似信息

推荐信息