PHP下用rmdir实现删除目录的三种方法小结


Posted in PHP onApril 20, 2008

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、循环法 
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快递单号查询接口使用示例
May 05 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP6新特性分析
Mar 03 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 PHP
laravel框架中间件简单使用方法示例
Jan 25 PHP
PHP网页缓存技术优点及代码实例
Jul 29 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 #PHP
php采集速度探究总结(原创)
Apr 18 #PHP
Snoopy类使用小例子
Apr 15 #PHP
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 #PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 #PHP
php zend解密软件绿色版测试可用
Apr 14 #PHP
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 #PHP
You might like
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
curl和libcurl的区别简介
2015/07/01 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
学习Python列表的基础知识汇总
2020/03/10 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
党员创先争优承诺书
2014/03/26 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
诉讼授权委托书
2014/10/15 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书