递归创建目录

方法一

 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. .pro配置选项

    在Qt Creator的项目中添加头文件和库   在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库 unix:LIBS += -L your_lib_path -ly ...

  2. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

  3. xtrabackup 增量备份(InnoDB)

    mysql> select * from users; +----+-----------+----------+--------------+ | id | name | password | ...

  4. ***阿里云linux 下怎么配置虚拟主机

    最近有个问题,本人在阿里云买了linux服务器,用wordpress做了一个博客网站www.bravetiger.cn,现在想加一个电商系统进去,假设二级域名为:shop.bravetiger.cn, ...

  5. Java Hour 55 Spring Framework 2

    上一章节估计被官方的说明文档扯晕了,其实说白了不就是个IOC 注入的容器么,用过了微软Enterprise Library 的Unity 的我还会怕这个.自己随便写个demo, 将知识的主题框架先构建 ...

  6. Java Hour 36 Weathre ( 9 ) struts2 – exception

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 35 Exception Handling 直接添加全局性的异常处理 ...

  7. codevs 2924 数独

     数独挑战 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codevs.cn/problem/2924/ Description “芬兰数学家因 ...

  8. 【bzoj1051】 [HAOI2006]受欢迎的牛 tarjan缩点判出度算点数

    [bzoj1051] [HAOI2006]受欢迎的牛 2014年1月8日7450 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...

  9. WinForm点击按钮,访问百度

    命名空间 using System.Diagnostics; button的click事件中写入如下 Process.Start("http://www.xxx.com"); 注: ...

  10. Ecological Premium

    #include<bits/stdc++.h> using namespace std; int main() { int n,m; unsigned long long int a,b, ...