递归创建目录

方法一

 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创建成功

php 递归创建目录、递归删除非空目录、迭代创建目录相关推荐

  1. C++递归删除非空目录所有文件

    今天在写C++代码时,遇到一个小问题,也是搞了一下午才解决(惭愧),就是在某个目录下,保存的相同名称的图片没有自动覆盖,意思就是多次运行相同的程序,如果某个文件(名)存在的话,那么这个文件则不会被覆盖 ...

  2. linux c 删除非空目录

    Linux下系统api int rmdir(const char *pathname);可以删除目录.但使用rmdir函数时,目录必须为空,否则调用失败,函数返回-1,执行成功时,函数返回0. 也可以 ...

  3. 删除非空目录linux_如何在Linux中删除空的非空目录

    删除非空目录linux Linux file system consist of directories. A system administrator generally work with dir ...

  4. Dos下删除(非)空目录或文件

    [删除非空文件夹]: 在xp中的虚拟dos也就是开始运行cmd啦,是可以输入中文的,要删除非空文件夹请用rmdir /s /q命令 删除非空目录:RMDIR [/S] [/Q] [drive:]pat ...

  5. windows强制删除非空目录

    在Windows系统中,可以使用「rd」命令强制删除非空目录. 使用方法: 打开命令提示符窗口(Windows键 + R,输入cmd,回车) 输入「rd /s /q 目录名」(例如「rd /s /q ...

  6. php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码

    在MFC中没有提供API函数删除非空文件夹 A(目录),所以要想删除一个非空文件夹(目录)必须先删除里面的文件. 这里需要注意一个问题,如果非空文件夹(目录)下还有文件夹(目录)AA: 1.如果文件夹 ...

  7. php如何删除非空目录,php怎样删除非空目录_后端开发

    php删除非空目次的要领:起首自定义一个delDir函数:然后遍历目次,读出目次中的文件或文件夹:接着将目次下的文件与当前目次相连:末了递归挪用删除子目次,并运用"rmdir"函数 ...

  8. linux删除非空目录

    Linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,管理有多少级目 ...

  9. Node.js fs模块 删除非空目录

    这里主要是进一步使用其他方法删除目录,提高自己对fs模块提供的api的熟悉度 异步删除(深度模式) 核心思想就是遍历完成某一个目录以后,在遍历另外一个目录,最后开始冒泡删除 const fs = re ...

最新文章

  1. Nginx 的recv() failed 错误解决一例
  2. jquery 对 Json 的各种遍历
  3. 99.99%准确率!AI数据训练工具No.1来自中国
  4. BZOJ1001 狼抓兔子 终于过了!
  5. 11 个问题,帮你彻底搞懂工业互联网
  6. SysUtils.AdjustLineBreaks - Unix 与 Windows 的换行符互换
  7. 在spring中手动编写事务
  8. /proc/sys目录下文件的查看方法
  9. 数据仓库与数据挖掘的个人总结
  10. java计算集合交差并集
  11. 《你可能不知道免像控的两个细节问题》
  12. 数字音频:音频采样率和位深度
  13. 遥感小目标检测论文梳理
  14. android调用另一个app,Android调用另一个App界面
  15. 网络安全防御体系常用的安全设备
  16. 2811: [Apio2012]Guard
  17. 华为mate40pro和p40pro参数对比 华为mate40pro和p40pro哪个好
  18. intouch报表数据的获取
  19. Android 百度地图marker中图片不显示的解决方案
  20. 全球与中国PMN-PT单晶市场深度研究分析报告

热门文章

  1. 122. 买卖股票的最佳时机 II golang
  2. vivo C/C++工程师 HR视频面试问题总结20180807
  3. 计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...
  4. 字符串题目 1 --------判断两个字符串是否为旋转词
  5. c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)
  6. 网络基础2(分层模型,通信过程,以太网,ARP协议格式和具体功能详解)
  7. 【kali】kali环境下安装dvwa
  8. 437. 路径总和 III
  9. attr和prop的区别
  10. 为什么Linux下的环境变量要用大写而不是小写