php递归创造和删除文件夹的代码小结,PHP递归删除目录多少个代码实例

By admin in 4858.com on 2019年7月21日

下面给大家提供多少个函数仿照效法。

有了那一个小程序,PHPer就不要手动举办删减计算机上的目录文件了,在操演PHP目录文件操作时就足以用那一个函数,在这么些基础上还是能够增添浏览文件夹目录,然后开始展览删减。

递归函数为自调用函数,在函数体内直接或直接自身调用本人,但供给设置自调用的法规,若满足条件,则调用函数自身,若不满意则结束本函数的自调用,然后把当前流程的主控权交回给上一层函数来实行。

率先种办法:

php递归创造和删除文件夹的代码小结,PHP递归删除目录多少个代码实例。实例一:

代码一:

咱俩来看一个优秀的递归删除函数

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

函数的效应:删除目录上面的具备文件,并删除目录

<?php
/**
* 目录生成类 :UtilsMakeDir
* @author yepeng
* @since 2010.3.18
*/
class UtilsMakeDir{
//基目录 创设目录时不会对那么些目录举行确立。那应该是个已经存在的目录
private static $makeBasePath = ‘video’;
private static $delBasePath = ‘video’;

<?php 
function deletedir($dir){ 
      if(!handle=@opendir($dir)){     //检查实验要张开目录是不是存在 
4858.com,               die(“未有该目录”); 
      } 
     while(false !==($file=readdir($handle))){ 
               if($file!==”.”&&$file!==”..”){      
//排除当前目录与父级目录 
                            $file=$dir .DIRECTORY_SEPARATOR. $file; 
                            if(is_dir($file)){ 
                                  deletedir($file); 
                            }else{  // www.jb51.net
                                  if(@unlink($file)){ 
                                         echo
“文件<b>$file</b>删除成功。<br>”; 
                                  }else{ 
                                          echo 
“文件<b>$file</b>删除战败!<br>”; 
                                 } 
                } 
     } 
    if(@rmdir($dir)){ 
           echo
“目录<b>$dir</b>删除成功了。<br>\n”; 
    }else{ 
           echo “目录<b>$dir</b>删除失利!<br>\n”; 
  } 

<?php
function d_rmdir($dirname) {   //删除非空目录
if(!is_dir($dirname)) {
return false;
}
$handle = @opendir($dirname);
while(($file = @readdir($handle)) !== false){
if($file != ‘.’ && $file != ‘..’){
$dir = $dirname . ‘/’ . $file;
is_dir($dir) ? d_rmdir($dir) : unlink($dir);
}
}
closedir($handle);
return rmdir($dirname) ;
}
if(d_rmdir(“./temp”))
 echo “succes”;
else
 echo “false”;
?>

函数代码:

/**
* 递归组建目录,
* 构建成功再次回到那几个全路径,
* 建设构造失利再次来到false
* @param String $pathString 路线字符串如’2/3/4/5′
* @return false or string

//测量检验程序 
$dir=”/var/www/test”; 
deletedir($dir); 
?> 

其次个是从手册中翻出来的:)

 代码如下

public static function makeDir($pathString){
$pathArray = explode(‘/’,$pathString);
if(empty($pathArray[0])){
return false;
}
$path = array_shift($pathArray);
self::$basePath = self::$basePath.’/’.$path;
if(is_dir(self::$basePath)){
$path = implode(‘/’,$pathArray);
self::makeDir($path);
}
else{
@mkdir(self::$basePath,0777);
$path = implode(‘/’,$pathArray);
self::makeDir($path);
}
if(is_dir(self::$basePath)){
return self::$basePath;
}
else{
return false;
}
} */
/**
*
创建目录,包含基目录,举例图片要放在video(video为存在的目录)上面,你传入的参数应该是video/2/3/4
* 建设构变成功再次来到那个全路径,
* 建设构造战败重回false
* @param String $pathString 路径字符串如’video/2/3/4/5′
* @return false or string
**/
public static function makeDir($pathString){
$pathArray = explode(‘/’,$pathString);
$tmpPath = array_shift($pathArray);
foreach ($pathArray as $val){
$tmpPath .= “/”.$val;
if(is_dir($tmpPath)){
continue;
}
else {
@mkdir($tmpPath,0777);
}
}
if(is_dir($tmpPath)){
return $tmpPath;
}
else{
return false;
}
} /**
* 递归删除
* 删除目录及文件
* 假若传贰个‘video/2/3/4’那样的路线将去除4下的全数目录和文件
* @param string $stringPath
*/
public static function delDir($stringPath){
if(!$handle = @opendir($stringPath)){
return false;
}
while (false !==($file = readdir($handle))){
if($file !=’.’ && $file != ‘..’){
$tmpdir = $stringPath.”/”.$file;
if(is_dir($tmpdir)){
self::delDir($tmpdir);
rmdir($tmpdir);
}
if(is_file($tmpdir)){
unlink($tmpdir);
}
}
}
closedir($handle);
}}
?>

实例二:Php递归删除目录方法(包容中文目录和文件)

代码二:

<?php 
function deldir($dirname){ 
    if(file_exists($dirname)){//首先判别目录是还是不是有效 
        $dir =
opendir($dirname);//用opendir张开目录 
        while($filename =
readdir($dir)){//使用readdir循环读取目录里的内容 
         if($filename != “.” && $filename !=
“..”){//排除”.”和”..”这两个新鲜的目录 
            $file = $dirname.”/”.$filename; 
            if(is_dir($file)){//决断是或不是是目录,若是是则调用自己 
                deldir($file); //使用递归删除子目录   
            }else{ 
              @unlink($file);//删除文件 
            } 
          } 
        } 
            closedir($dir);//关闭文件操作句柄 
            rmdir($dirname);//删除目录 
    } 

?>

循环+递归,在winxp下测量试验成功,只要php文件编码为gb2312,文件名自由,应该把公文名改为编码为gb2312,就行

复制代码 代码如下:

复制代码 代码如下:

运用实例:Public是三个文件夹,里面有无数文件夹和文件,调用deldir($dirname)把它删除

复制代码 代码如下:

<?php
/*
本函数援救汉语删除目录,由于本人只测验了window下删除,linux未测量试验,如有毛病可留言只怕自个儿稍加修改就可以。
如有错误接待我们指正,共同学习
*/
header(“Content-type: text/html; charset=gb2312”);

<?php
 
functionremove_directory($dir){
 if($handle=opendir(“$dir”)){
 while(false!==($item=readdir($handle))){
  if($item!=”.”&&$item!=”..”){
   if(is_dir(“$dir/$item”)){
    remove_directory(“$dir/$item”);
   }else{
    unlink(“$dir/$item”);
    echo”removing$dir/$item<br> “;
   }
  }
 }
 closedir($handle);
 rmdir($dir);
 echo”removing$dir<br> “;
 }
}

<?php 
$dir=’Public’;//传入二个文本夹路线 
deldir($dir);//调用函数 
?>

<?php
deltree(‘./复件 复件 复件 复件 复件 复件 复件 复件 aaa’);
function deltree($pathdir)
{
//echo $pathdir.'<br/>’;//笔者调节和测量试验时用的
if(is_empty_dir($pathdir))//假设是空的
{
rmdir($pathdir);//直接删除
}
else
{//否则读那么些目录,除了.和..外
$d=dir($pathdir);
while($a=$d->read()) //下只删除$pathdir下
{
if(is_file($pathdir.’/’.$a) && ($a!=’.’) && ($a!=’..’))
{
unlink($pathdir.’/’.$a); //假诺是文本就一贯删除
}elseif(is_dir($pathdir.’/’.$a) && ($a!=’.’) && ($a!=’..’))
//要是是目录
{
if(!is_empty_dir($pathdir.’/’.$a))//是或不是为空
{
deltree($pathdir.’/’.$a); //假使不是,调用自己
}else
{
rmdir($pathdir.’/’.$a); //若是是空就直接删除
}
}
}
$d->close();
//echo “必须先删除目录下的具备文件”;//作者调节和测量检验时用的
rmdir($pathdir);
}
}
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;
}
?>

function delete_dir($tmp_path){

其多个是codebit.cn下边搜聚的,依旧手册里的好

证实:首先判别Public是或不是存在,假诺在则张开Public,然后使用readdir循环读取Public目录里的内容,即便存在”.”和”..”这八个杰出目录则排除掉。假诺赶上文件夹则调用自身管理,直到条件不满足。碰着文件则一贯删除掉。最后层层跳出删除Public。

其次种递归法
在winxp下测量试验成功,只要php文件编码为gb2312,文件名自由,应该把公文名改为编码为gb2312,就行,没测

 
    if(!is_writable($tmp_path) && is_dir($tmp_path)){
        chmod($tmp_path,0777);
    }

代码三:

实例二,删除非空目录

复制代码 代码如下:

    $encode = mb_detect_encoding($tmp_path,
array(‘UTF-8′,’GB2312′,’ASCII’,’GBK’));
    $tmp_path = iconv($encode,’gb2312′,$tmp_path);

复制代码 代码如下:

 代码如下

<?php
header(“Content-Type:text/html; charset=gb2312”);
if(deleteDir(‘./复件 复件 复件 复件 复件 复件 复件 复件 复件 复件 复件
aaa’))
echo “删除成功”;
function deleteDir($dir)
{
if (@rmdir($dir)==false && is_dir($dir)) //删除不了,步入删除全体文件
{
if ($dp = opendir($dir))
{
while (($file=readdir($dp)) != false)
{
if($file!=’.’ && $file!=’..’)
{ //echo $file=$dir.’/’.$file;echo ‘<br/>’;
$file=$dir.’/’.$file;
if (is_dir($file)) //是真实目录
{
deleteDir($file);
}else {
unlink($file);
}
}
}
closedir($dp);
}else
{
return false;
}
}
if (is_dir($dir) && @rmdir($dir)==false) //是目录删除不了
return false;
return true;
}
?>

 
    $handle_object = scandir($tmp_path);

functionremoveDir($dirName)
{
  if(!is_dir($dirName))
  {
    returnfalse;
  }
  $handle=@opendir($dirName);
  while(($file=@readdir($handle))!==false)
  {
    if($file!=’.’&&$file!=’..’)
    {
      $dir=$dirName.’/’.$file;
      is_dir($dir)?removeDir($dir):@unlink($dir);
    }
  }
  closedir($handle);  
  returnrmdir($dirName);
}
?>

/*
 自定义的删除函数,能够去除文件和递归删除文件夹
*/
 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错误,望着闷气
 }

其二种递归法 在winxp下测量检验成功,是列出目录文件 很好用

 
    if(count(scandir($tmp_path))==2){

你只怕感兴趣的作品:

  • php获取目录全体文件并将结果保存到数组(实例)
  • php上传文件,创设递归目录的实例代码
  • php文件夹与文件目录操作函数介绍
  • php
    删除目录下N分钟前创办的持有文件的实今世码
  • PHP遍历有些目录下的装有文件和子文件夹的落实代码
  • php轻便浏览目录内容的兑今世码
  • PHP删除目录及目录下具备文件的格局详解
  • php 目录遍历、删除
    函数的行使介绍
  • php处理公事的小例子(解压缩,删除目录)
  • php列出三个索引下的兼具文件的代码
  • php遍历目录与公事夹的有余主意详解

}

复制代码 代码如下:

        if(rmdir($tmp_path)){
            echo $tmp_path.'<br />’;
        }else{
            echo $tmp_path.'<br />’;
        }

$path=’d:/技艺文书档案 – 别本’;    //要刨除的公文夹

<?php
function listDir($dir)
{
static $break=0; if($break++==100) exit;//调节深切层数
static $i=-0;
if(is_dir($dir))//目录
{
if ($dh = opendir($dir))//打开
{
while (($file = readdir($dh)) !== false)
{
if((is_dir($dir.”/”.$file)) && $file!=”.” && $file!=”..”)//目录
{
$j=$i;while($j–) echo “——-“;
echo “<b><font
color=’red’>目录名:</font></b>”.$dir.”/”.$file.”<br><hr>”;
$i++;
listDir($dir.”/”.$file);
$i–;
}
else
{
if($file!=”.” && $file!=”..”)
{
$j=$i;while($j–) echo “——-“;
$ext=trim(extend($file));
//if($ext==’jpg’)
echo $dir.’/’.$file.”<br>”;
}
}
}
closedir($dh);
}
}
}
function extend($file_name)
{
$retval=””;
$pt=strrpos($file_name, “.”);
if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) –
$pt);
return ($retval);
}
//起初运营
listDir(“.”);
?>

        return ;

//假使php文件不是ANSI,而是UTF-8格局,何况要刨除的文件夹中包罗汉字字符的话,调用函数前须求转码
//$path=iconv( ‘utf-8’,
‘gb2312’,$path );

您或然感兴趣的稿子:

  • PHP操作文件类的函数代码(文件和文书夹创造,复制,移动和删除)
  • php删除与复制文件夹及其文件夹下全体文件的落实代码
  • PHP创造/删除/复制文件夹、文件
  • PHP达成递归复制整个文件夹的类实例
  • PHP文件及文件夹操作之成立、删除、移动、复制
  • 探求PHP删除文件夹的三种办法
  • PHP 删除文件与公事夹操作
    unlink()与rmdir()那四个函数的运用
  • php达成的遍历文件夹下全部文件,编辑删除
  • php递归删除钦命文件夹的不二等秘书诀小结
  • php使用递归总括文件夹大小
  • PHP递归完毕公文夹的复制、删除、查看大小操作示例

    }

my_del($path); 

    foreach($handle_object as $val){       

例3,可查阅成功之失败原因

        if($val!=’..’ && $val!=’.’ && $val!=”){

 代码如下

            if(filetype($tmp_path.’/’.$val)==’dir’){

<?php   
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”文件<b>$file</b>删除成功。<br>”;   
}else{   
echo”文件<b>$file</b>删除失利!<br>”;   
}   
}   
}   
if(@rmdir($dir)){   
echo”目录<b>$dir</b>删除成功了。<br>n”;   
}else{   
echo”目录<b>$dir</b>删除退步!<br>n”;   
}   
}   
 
//测验程序   
$dir=”/var/www/test”;   
deletedir($dir);   
?>  

                if(count(scandir($tmp_path.’/’.$val))==2){
                    if(rmdir($tmp_path.’/’.$val)){
                        echo $$tmp_path.’/’.$val.'<br />’;
                    }else{
                        echo $$tmp_path.’/’.$val.'<br />’;
                    }
                }else{
                    delete_dir($tmp_path.’/’.$val);
                }          
            }else{
                if(unlink($tmp_path.’/’.$val)){
                    echo $$tmp_path.’/’.$val.'<br />’;
                }else{
                    echo $$tmp_path.’/’.$val.'<br />’;
                }
            }          
        }else{

 
在/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

            continue;
        }

    }

    
    if(rmdir($tmp_path)){
        echo $tmp_path.'<br />’;
    }else{
        echo $tmp_path.'<br />’;
    }

        return ;

    
}

delete_dir(‘D:/AppServ/www/testing/哈哈’);

?>

实例三:参数$dir文件名例子:admin/runtime 那样的

复制代码 代码如下:

//删除目录及所富含文件函数  
function deldir($dir) {  
     //张开文件目录  
     $dh = opendir($dir);  
     //循环读取文件  
     while ($file = readdir($dh)) {  
         if($file != ‘.’ && $file != ‘..’) {  
             $fullpath = $dir . ‘/’ . $file;  

    //判别是不是为目录  
             if(!is_dir($fullpath)) {  
       echo $fullpath.”已被删去<br>”;  
                  //假诺不是,删除该文件  
                 if(!unlink($fullpath)) {                 
                 }  
            } else {  
                 //要是是目录,递归本身删除下级目录               
     deldir($fullpath);  
            }  
        }  
   }  
    //关闭目录  
     closedir($dh);  
   //删除目录  
  //if(rmdir($dir)) {  
    //    return true;  
//    } else {  
     //    return false;  
  //  }  
}

实例四:

复制代码 代码如下:

<?php 
function deldir($dirname){ 
    if(file_exists($dirname)){//首先判别目录是不是可行 
        $dir = opendir($dirname);//用opendir伸开目录 
        while($filename =
readdir($dir)){//使用readdir循环读取目录里的原委 
         if($filename != “.” && $filename !=
“..”){//排除”.”和”..”那多个例外的目录 
            $file = $dirname.”/”.$filename; 
            if(is_dir($file)){//判定是还是不是是目录,假如是则调用本身 
                deldir($file); //使用递归删除子目录   
            }else{ 
              @unlink($file);//删除文件 
            } 
          } 
        } 
            closedir($dir);//关闭文件操作句柄 
            rmdir($dirname);//删除目录 
    } 

?>

实例五:

复制代码 代码如下:

/**
 * 删除非空目录
 * @method rrmdir
 */
function rrmdir ($dir) {

    if (is_dir($dir)) {

        $fs = array_slice(scandir($dir), 2);
        foreach ($fs as $f) {
            $path = $dir . ‘/’ . $f;
            is_dir($path) ? rrmdir($path) : unlink($path);
        }
        reset($fs);
        return rmdir($dir);
    }

}

实例六:

复制代码 代码如下:

<?php
function del_dir( $dir )
{
  if ( $handle = opendir( $dir ) )
  {
    while ( false !== ( $item = readdir( $handle ) ) )
    {
      if ( $item != “.” && $item != “..” )
      {
        if ( is_dir( “$dir/$item” ) )
        {
          del_dir( “$dir/$item” );
        }
        else
        {
          unlink( “$dir/$item” ) ;
        }
      }
    }
    closedir( $handle );
    rmdir( $dir ) ;

  }
}
?>

您只怕感兴趣的作品:

  • php递归成立和删除文件夹的代码小结
  • php递归遍历删除文件的措施
  • php完毕用于删除全部目录的递归函数
  • php递归删除目录与公事的法子
  • php成立和删除目录函数介绍和递归删除目录函数共享
  • php递归删除目录下的文件但保留的实例分享
  • php自定义函数之递归删除文件及目录
  • php递归删除钦命文件夹的法子小结

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有