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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Php中使用mkdir如何创建多级目录?相关的知识,希望对你有一定的参考价值。

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如何创建多级目录?的主要内容,如果未能解决你的问题,请参考以下文章

C里面mkdir可否创建多级子目录

linux下如何建立多级文件目录?

PHP如何创建文件夹(mkdir的用法,mkdirs的语法)

php创建多级目录

fopen创建多级目录下文件的问题

Java 创建多级不存在目录