递归创建目录

方法一

 function mk_dir($path){
if(is_dir($path)){  //参数本身是一个目录
return true;
} if(is_dir(dirname($path))){ //参数的父目录是一个目录,则创建目录
return mkdir($path);
} mk_dir(dirname($path));  
return mkdir($path);
} $path = './a/b/c/d/e';
echo mk_dir($path)?'OK':'Fail';

方法二

 function mk_dir($path){
if(is_dir($path)){
return true;
} return is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
} $path = './a/aa';
echo mk_dir($path)?'ok':'fail';

递归删除非空目录:

 function deldir($path){
if(!is_dir($path)){
return '不是目录';
} $dh = opendir($path);
while(($res = readdir($dh)) !== false){
//排除 . 和 ..
if($res == '.' || $res == '..'){
continue;
} if(!is_dir($path.'/'.$res)){ //是文件,直接删除
unlink($path.'/'.$res);
}else{ //是目录,递归调用
deldir($path.'/'.$res);
}
}
closedir($dh);
rmdir($path);
echo "删除".$path.'<br />';
return 'success';
} echo deldir('./aa');

迭代创建目录

方法一

 function mk_dir($path){
$arr = array();
while(!is_dir($path)){
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 )
$path = dirname($path);
} //print_r($arr); if(empty($arr)){
return true;
} foreach ($arr as $v) {
mkdir($v);
echo '创建'.$v.'成功<br />';
}
} 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. Python 递归删除非空目录(包括子目录以及文件)

    Python的OS模块自带rmdir和removedirs函数用于删除目录,但是两者都不能删除非空目录,以下代码定义了一个函数 remove_dir 用于删除非空目录. #作者官网 http://ww ...

  2. php rmdir使用递归函数删除非空目录

    我们大家都知道,php rmdir()函数用于删除空目录,但如果要删除非空目录,我们必须将非空目录中的文件或子目录删除,本文章向大家介绍php如何使用递归函数删除非空目录,需要的朋友可以参考一下.首先 ...

  3. Linux删除非空目录的方法

    rmdir 无法删除非空目录. rm -rf 可以递归,强制,删除目录

  4. php rmdir使用递归函数删除非空目录的方法

    php rmdir()函数 rmdir ― 删除空目录 语法: bool rmdir ( string $dirname [, resource $context ] )尝试删除 dirname 所指 ...

  5. php删除非空目录代码实现

    <?php header("Content-type: text/html; charset=utf-8"); $dir='mydir'; function deldir($ ...

  6. Linux删除非空目录

    Linux下如何删除非空目录   这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下)我本来觉得应该使用命令 rmdir但是发现它无法删除非空的目录.后来发现了原来应该使用 ...

  7. Linux如何删除非空目录

    这个问题很basic,不过还是困扰了我一段时间.(这里主要讨论的是命令行模式下) 我本来觉得应该使用命令 rmdir 但是发现它无法删除非空的目录. 后来发现了原来应该使用命令 rm -rf 目录名 ...

  8. C语言实现Linux下删除非空目录

    #include <sys/stat.h> #include <dirent.h> #include <fcntl.h> /** * 递归删除目录(删除该目录以及该 ...

  9. Linux下怎么删除非空目录

    rm -rf 目录名 解释: 1.r意思是删除目录,f意思是force的缩写,强制删除,不提示. 2.如果目录为空,可以用 "rmdir 目录名"删除. 3.如果目录不为空,可以用 ...

随机推荐

  1. 对象复制、克隆、深度clone

    -------------------------------------------------------------------------------- ------------------- ...

  2. 区间dp总结

    poj 1141 Brackets Sequence 基础的区间dp题,注意dp边缘的初始化,以及递归过程中的边界 poj 2955 Brackets 依旧注意初始化,水题 hdu 4745 Two ...

  3. 建模算法(一)——线性规划

    一.解决问题 主要是安排现有资源(一定),取得最好的效益的问题解决,而且约束条件都是线性的. 二.数学模型 1.一般数学模型 2.MATLAB数学模型 其中c,x都是列向量,A,Aeq是一个合适的矩阵 ...

  4. php中count获取多维数组长度的方法

    转自:http://www.jb51.net/article/57021.htm 本文实例讲述了php中count获取多维数组长度的实现方法.分享给大家供大家参考.具体分析如下: 先来看看下面程序运行 ...

  5. TextView属性大全

    今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先. 发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符号等就会有问题,目前还没有 ...

  6. node相关--socket.io

    使用Socket.IO可以避免webSocket产生的问题: 传输: Socket.IO中消息的传递是基于传输的,而非全部依靠WebSocket; 它总会尝试选择对用户来说速度最快.对服务器性能来说最 ...

  7. HTML-web storage

    cookie:是一个在服务区和客户端间来回传送文本值的内置机制: 大小受限:一般4KB: 只要涉及cookie,它就会自动在服务器和浏览器之间传送:  //会存在安全问题:多消耗网络宽带: 操作:de ...

  8. Xamarin.iOS模拟器调试找不到资源文件

    Xamarin.iOS模拟器调试找不到资源文件 在Visual Studio 2015中,运行Xamarin.iOS项目,出现找不到资源文件的错误.错误信息:System.IO.FileNotFoun ...

  9. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...

  10. DFS+模拟 ZOJ 3861 Valid Pattern Lock

    题目传送门 /* 题意:手机划屏解锁,一笔连通所有数字,输出所有可能的路径: DFS:全排列 + ok () 判断函数,去除一些不可能连通的点:) */ #include <cstdio> ...