zoukankan      html  css  js  c++  java
  • php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录

    方法一

     1 function mk_dir($path){
     2     if(is_dir($path)){  //参数本身是一个目录
     3         return true;
     4     }
     5 
     6     if(is_dir(dirname($path))){ //参数的父目录是一个目录,则创建目录
     7         return mkdir($path);
     8     }
     9 
    10     mk_dir(dirname($path));  
    11     return mkdir($path);
    12 }
    13 
    14 $path = './a/b/c/d/e';
    15 echo mk_dir($path)?'OK':'Fail';

    方法二

     1 function mk_dir($path){
     2     if(is_dir($path)){
     3         return true;
     4     }
     5 
     6     return is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
     7 }
     8 
     9 $path = './a/aa';
    10 echo mk_dir($path)?'ok':'fail';

    递归删除非空目录:

     1 function deldir($path){
     2     if(!is_dir($path)){
     3         return '不是目录';
     4     }
     5 
     6     $dh = opendir($path);
     7     while(($res = readdir($dh)) !== false){
     8         //排除 . 和 ..
     9         if($res == '.' || $res == '..'){
    10             continue;
    11         }
    12 
    13         if(!is_dir($path.'/'.$res)){    //是文件,直接删除
    14             unlink($path.'/'.$res);
    15         }else{    //是目录,递归调用
    16             deldir($path.'/'.$res);
    17         }
    18     }
    19     closedir($dh);
    20     rmdir($path);
    21     echo "删除".$path.'<br />';
    22     return 'success';
    23 }
    24 
    25 echo deldir('./aa');

    迭代创建目录

    方法一

     1 function mk_dir($path){
     2     $arr = array();
     3     while(!is_dir($path)){
     4         array_unshift($arr, $path); //Array ( [0] => ./a [1] => ./a/b [2] => ./a/b/c [3] => ./a/b/c/d [4] => ./a/b/c/d/e ) 
     5         $path = dirname($path);
     6     }
     7 
     8     //print_r($arr);
     9 
    10     if(empty($arr)){
    11         return true;
    12     }
    13 
    14     foreach ($arr as $v) {
    15         mkdir($v);
    16         echo '创建'.$v.'成功<br />';
    17     }        
    18 }
    19 
    20 mk_dir('./a/b/c/d/e');

    创建./a成功
    创建./a/b成功
    创建./a/b/c成功
    创建./a/b/c/d成功
    创建./a/b/c/d/e成功

    方法二

    function mk_dir($path){
        $arr = array();
        while(!is_dir($path)){
            array_push($arr, $path); //Array ( [0] => ./a/b/c/d/e [1] => ./a/b/c/d [2] => ./a/b/c [3] => ./a/b [4] => ./a )
            $path = dirname($path);
        }
    
        //print_r($arr);
    
        if(empty($arr)){
            return true;
        }
    
        while(count($arr)){
            $tmp = array_pop($arr);
            mkdir($tmp);
            echo $tmp.'创建成功<br />';
        }        
    }
    
    mk_dir('./a/b/c/d/e');

    ./a创建成功
    ./a/b创建成功
    ./a/b/c创建成功
    ./a/b/c/d创建成功
    ./a/b/c/d/e创建成功

  • 相关阅读:
    Spring学习总结之高级装配
    Spring学习总结之装配bean
    NS2安装过程中环境变量设置的问题(ns-2.35)
    =======================分割线======================================
    java的内存管理机制
    Python之面向对象编程
    Python之列表生成式
    Python之函数的参数
    Git基础级介绍
    第四次作业——个人作业——软件案例分析
  • 原文地址:https://www.cnblogs.com/dee0912/p/4298293.html
Copyright © 2011-2022 走看看