PHP下几种删除目录的方法总结


Posted in PHP onAugust 19, 2007

呵呵,忽然一个朋友问我如何删除目录,比如下面有文件呢,我说用递规呀,他说太慢了。于是就总结出了下面几种办法。

1。递规法: //我提供,好像有点不对,没测试

deleteDir($dir)
{
 if (rmdir($dir)==false && is_dir($dir)) {
  if ($dp = opendir($dir)) {
   while (($file=readdir($dp)) != false) {
    if (is_dir($file) && $file!='.' && $file!='..') {
     deleteDir($file);
    } else {
     unlink($file);
    }
   }
   closedir($dp);
  } else {
   exit('Not permission');
  }
 } 
}

2。系统调用法     //大师兄提供

function del_dir($dir)
{
 if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
     $str = "rmdir /s/q " . $dir;
 } else {
     $str = "rm -Rf " . $dir;
 }
}

3。循环法   //from: http://www.knowsky.com/1148.html

function deltree($pathdir) 

echo $pathdir;//我调试时用的 

if(is_empty_dir($pathdir))//如果是空的 
    { 
    rmdir($pathdir);//直接删除 
    } 
    else 
    {//否则读这个目录,除了.和..外 
        $d=dir($pathdir); 
        while($a=$d->read()) 
        { 
        if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);} 
        //如果是文件就直接删除 
        if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) 
        {//如果是目录 
            if(!is_empty_dir($pathdir.'/'.$a))//是否为空 
            {//如果不是,调用自身,不过是原来的路径+他下级的目录名 
            deltree($pathdir.'/'.$a); 
            } 
            if(is_empty_dir($pathdir.'/'.$a)) 
            {//如果是空就直接删除 
            rmdir($pathdir.'/'.$a); 
            } 
        } 
        } 
        $d->close(); 

    echo "必须先删除目录下的所有文件";//我调试时用的 

    } 

function is_empty_dir($pathdir) 
{

//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空
$d=opendir($pathdir); 
$i=0; 
    while($a=readdir($d)) 
    { 
    $i++; 
    } 
closedir($d); 
if($i>2){return false;} 
else return true; 

}  

呵呵,足够给各种朋友用了吧,只是按照你需要和速度来论吧。

PHP 相关文章推荐
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php简单实现数组分页的方法
Apr 30 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP微信模板消息操作示例
Jun 29 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
wordpress之wp-settings.php
Aug 17 #PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 #PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 #PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 #PHP
真正的ZIP文件操作类(php)
Jul 21 #PHP
php 用sock技术发送邮件的函数
Jul 21 #PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 #PHP
You might like
随机头像PHP版
2006/10/09 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python中pygame安装方法图文详解
2015/11/11 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
专家推荐信模板
2014/05/09 职场文书
妇女干部培训方案
2014/05/12 职场文书
日语专业求职信
2014/07/04 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
服务员岗位职责范本
2015/04/09 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers