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

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

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;

}

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

(0)

相关推荐

  • php判断并删除空目录及空子目录的方法

    本文实例讲述了php判断并删除空目录及空子目录的方法.分享给大家供大家参考.具体实现方法如下: 步骤如下: 1.遍历目录及子目录 2.使用 scandir 判断目录是否为空,为空则使用rmdir 删除. <?php /** 删除所有空目录 * @param String $path 目录路径 */ function rm_empty_dir($path){ if(is_dir($path) && ($handle = opendir($path))!==false){ while((

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

    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!='..') {       del

  • php递归删除目录与文件的方法

    本文实例讲述了php递归删除目录与文件的方法.分享给大家供大家参考.具体实现方法如下: <?php function deldir($path){ $dh = opendir($path); var_dump(readdir($dh)); while(($d = readdir($dh)) !== false){ if($d == '.' || $d == '..'){//如果为.或.. continue; } $tmp = $path.'/'.$d; if(!is_dir($tmp)){//如

  • php实现删除指定目录下相关文件的方法

    本文实例讲述了php实现删除指定目录下相关文件的方法.分享给大家供大家参考.具体实现方法如下: 通常来说在php中删除文件最简单的方法就是直接使用unlink命令,而对于需要删除指定目录下的指定文件的情况,就需要遍历删除了. 具体实例代码如下: 复制代码 代码如下: <?php  //删除指定文件夹下的非法文件  function my_del($dir)  {     if(is_dir($dir)){         //打开指定文件夹         if($handle = opendi

  • php最简单的删除目录与文件实现方法

    本文实例讲述了php最简单的删除目录与文件实现方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: <?php  //删除目录下所有空目录  array_map('rmdir', glob('*', GLOB_ONLYDIR));  //删除目录所有文件  array_map('unlink', array_filter(glob('*'), 'is_file')); ?> 原理分析:array_map('rmdir', glob('*', GLOB_ONLYDIR)); 删

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

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

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

    呵呵,忽然一个朋友问我如何删除目录,比如下面有文件呢,我说用递规呀,他说太慢了.于是就总结出了下面几种办法. 1.递规法: //我提供,好像有点不对,没测试 deleteDir($dir) {  if (rmdir($dir)==false && is_dir($dir)) {   if ($dp = opendir($dir)) {    while (($file=readdir($dp)) != false) {     if (is_dir($file) && $f

  • Python简单实现自动删除目录下空文件夹的方法

    本文实例讲述了Python简单实现自动删除目录下空文件夹的方法.分享给大家供大家参考,具体如下: 总是发现电脑用上一段时间,各种软件生成各种目录,可是这些目录都是空文件夹,感觉没用,或许有些许强迫症吧,每次看到都会去删除掉他们,有时候真的太多了,让人删除起来就蛋疼,最近学习Python,特别希望搞些有用的小脚本,然后就开始使用python搞起了这个小脚本的编写. 因为完全是个初学者,所以写起脚本来,各种百度,google,可到最后我写的脚本也不能达到我的目的,只能删除一级目录下的空文件夹,而子目

  • sql下三种批量插入数据的方法

    本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出

  • Yii遍历行下每列数据的方法

    本文实例讲述了Yii遍历行下每列数据的方法.分享给大家供大家参考,具体如下: 效果图如下: 控制器(1种): //显示列表 public function actionList() { //实例化对象 $model= new Qiu(); $country = \Yii::$app->db; //查询数据 $data = $country->createCommand("select * from qiu join region on qiu.region_id=region.reg

  • JAVA四种基本排序方法实例总结

    本文实例讲述了JAVA四种基本排序方法.分享给大家供大家参考.具体如下: JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 一 插入法: 遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置.交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把

  • thinkPHP中钩子的两种配置调用方法详解

    本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

  • PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例

    本文实例讲述了PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法.分享给大家供大家参考,具体如下: 1.如何在php中把驼峰样式的字符串转换成下划线样式的字符串.例:输入是FooBar的话,输出则是foo_bar 以下是用正则的方式去完成,既然用到正则,方法肯定就不只一种,我们看下下面的方式 echo strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', 'fooBar')); //output:foo_bar echo &quo

  • 在IIS下安装PHP扩展的方法(超简单)

    很多网上的文章在介绍IIS下安装PHP的时候都会涉及到很多配置的修改,其实大部分都是不必要的,对于需要查找如何安装PHP扩展的人来说,其实最需要的或许只是一个现在就能用的版本,在这个时候引入过多的不必要的配置我认为是低效的. 那么归纳一下其实安装步骤只需要三步: 1.下载PHP的文件包: 2.配置PHP: 3.将PHP扩展引入IIS: 当然,或许还有第4步:测试. 第一步:下载PHP PHP的windows版本是直接提供了一个压缩包,里面包括了运行所需的全部文件,堪称傻瓜式安装,可以从官网上的w

  • C# 重写ComboBox实现下拉任意组件的方法

    一.需求 C#种的下拉框ComboBox不支持下拉复选框列表与下拉树形列表等,系统中需要用到的地方使用了第三方组件,现在需要将第三方组件替换掉. 二.设计 基本思路:重写ComboBox,将原生的下拉部分屏蔽,使用toolStripDropDown制作下拉弹出 三.问题解决 1. 问题:toolStripDropDown中放toolStripControlHost时会有边框产生,同时CheckedListBox的duck为full时底端会有很大空白 解决: toolStripControlHos

  • 在任意字符集下正常显示网页的方法二(续)

    转:coolcode.cn 前几天写了一篇在任意字符集下正常显示网页的方法,里面介绍的很简单,就是把前128个字符以外的字符集都用 NCR 来表示,但是具体怎么转化我没有介绍,因为当时我觉得太简单了.但是后来发现有人问这个问题,这里就详细说明一下. 首先第一步是要把源字符集的字符串转化为 UTF-16 字符集,做这一步是因为 UTF-16 字符集中的每个字符都是两个字节,后面处理起来很容易,而如果在源字符集上直接做处理则很复杂.源字符集可以从原网页中的 meta 标签中获得,也可以单独指定,我的

随机推荐