码迷,mamicode.com
首页 > Web开发 > 详细

Php中使用mkdir如何创建多级目录?

时间:2016-12-06 15:53:13      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:

php mkdir函数可以创建目录,而且在php5版本及以上可以直接使用该函数创建多级目录,但在php5以下版本无法直接使用mkdir创建多级目录,需要自己写函数来实现,本文章向大家介绍php开发中使用mkdir创建多级目录的二种实现方法,需要的朋友可以参考一下。

  方法一:mkdir创建多级目录

  mkdir($path,0777,true);

  PHP5对创建目录函数 mkdir 增加了一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是这个在PHP4环境下是行不通的。

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

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

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

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

  具体代码如下:

  <?php

  header("Content-type:text/html;charset=utf-8");//要创建的多级目录$path="div/css/layout";//判断目录存在否,存在给出提示,不存在则创建目录if (is_dir($path)){

  echo "对不起!目录 " . $path . " 已经存在!";

  }else{

  //第三个参数是“true”表示能创建多级目录,iconv防止中文目录乱码

  $res=mkdir(iconv("UTF-8", "GBK", $path),0777,true);

  if ($res){

  echo "目录 $path 创建成功";

  }else{

  echo "目录 $path 创建失败";

  }

  }?>

  方法二:自己写一个函数来实现php创建多级目录

  function mkdirs($dir,$mode=0777){

  if(is_dir($dir)||@mkdir($dir,$mode)){

  return true;

  }

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

  return false;

  }

  return @mkdir($dir,$mode);

  }

  解释: 简单说一下mkdir()与mkdirs()的区别,以及is_dir和dirname():

  mkdir() 只能在已经存在的目录中创建创建文件夹(即父级必须有才行)。

  mkdirs() 可以在不存在的目录中创建文件夹。诸如:a\\b,既可以创建多级目录。

  dirname()是返回路径中的目录部分。

  is_dir()用于判断给出的文件名是否是一个有效的目录

  大致流程为:

  (1) 先用is_dir判断是否已是一个文件夹,如果是则返回TRUE。如没有(或者不是文件夹),则试着创建它,当然有可以父级不存在,那mkdir直接就创不成功,但也为不报错,所以就用@来抑止报非致命错误。

  (2)如果传参数都不满足条件,那么就进入第二个if语句,先是取得路径中的目录部分,当然有可能是不存在的多级父级,所以用了mkdirs()来先创建父级,如果成功(不成功返回FALSE),那么再用mkdir来创建最终的目录了。

 

来源:码农教程

Php中使用mkdir如何创建多级目录?

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
jiangjie190
加入时间:2016-02-19
  关注此人  发短消息
文章分类
jiangjie190”关注的人------(0
jiangjie190”的粉丝们------(0
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!