PHP创建多级目录

1.递归调用方式

function createFolder($path)
{
   if(!file_exists($path))
   {
      ctreateFolder(dirname($path));
      mkdir($path,0700);
   }
}

2.数组方式

-----------------参考1--------------------------------

 

<?php

$cdir="a/b/c/d";        //数据库里存储的字段

//判断文件夹是否存在,并创建文件夹

if(strpos($cdir,"/")>0){        //判断内容里是否含有"/"

$arr=explode("/",$cdir);   //将内容以“/”分割创建成数组

$ycj="../";//定义一个变量。指定站点根目录

foreach($arr as $key=>$value){//循环输出数组,

$$key=$value;//值付给变量$value

if ($value!=""){                    //如果值不为空(因为数组的最后一个值是空的)

if(!file_exists("".$ycj.$value."")){          //如果没有这个文件夹

 mkdir("".$ycj.$value."/");                  //创建这个文件夹

}$ycj=$ycj.$value."/";//给$ycj重新赋值

}

}

echo $ycj."文件夹已创建<br>";//最后输出文件夹路径

}

 //已创建文件夹

?>  

-----------------参考2--------------------------------

php函数mkdir参数与描述

  path 必需。规定要创建的目录的名称。

  mode 必需。规定权限。默认是 0777。

  recursive 必需。规定是否设置递归模式。

  context 必需。规定文件句柄的环境。Context 是可修改流的行为的一套选项。

  说明

  php函数mkdir 尝试新建一个由 path 指定的目录。

  默认的 mode 是 0777,意味着最大可能的访问权。

  php默认的mkdir一次只能创建一层目录,如果在当前目录下创建一个div/css/layout 的目录就需要逐层逐层的先创建div,再创建div/css 再创建 div/css/layout,然而我们希望能让程序自动帮我们完成这个过程。

  其实思路也很简单,1.先判断 div目录是否存在,不存在则创建;2.判断子目录 div/css 是否存在,不能存在则创建,3.在第二步中以子目录作为参数递归调用函数本身。也可以按相反顺序来,1.先判断最底层目录div/css/layout是否存在;2.判断div/css/layout的上层目录div/css是否存在,不存在则以div/css作为参数递归进行。。

  下面是php函数mkdir的程序代码:

function mkdirs($dir)

{

if(!is_dir($dir))

{

if(!mkdirs(dirname($dir))){

return false;

}

if(!mkdir($dir,0777)){

return false;

}

}

return true;

}

mkdirs('div/css/layout');

同样的思路,php用rmdir和unlink递归删除多级目录的代码:

function rmdirs($dir)

{

$d = dir($dir);

while (false !== ($child = $d->read())){

if($child != '.' && $child != '..'){

if(is_dir($dir.'/'.$child))

rmdirs($dir.'/'.$child);

else unlink($dir.'/'.$child);

}

}

$d->close();

rmdir($dir);

}

以上代码示例就是php函数mkdir实现创建多级目录的具体方法。

posted on 2011-11-30 16:16  kingang  阅读(896)  评论(0编辑  收藏  举报

导航