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来创建最终的目录了。

来源:码农教程

时间: 2024-11-08 22:24:04

Php中使用mkdir如何创建多级目录?的相关文章

PHP使用mkdir创建多级目录的方法

PHP中使用mkdir()可以创建多级目录,相比之前自己一级一级的创建,这个函数非常好用. 下面是php手册上的函数介绍: bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] ) 返回值为bool类型. 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权: 第三个参数:true表示

运用php函数mkdir创建多级目录

php默认的mkdir一次只能创建一层目录,如果在当前目录下创建一个div/css/layout 的目录就需要逐层逐层的先创建div,再创建div/css 再创建 div/css/layout,然而我们希望能让程序自动帮我们完成这个过程. 其实思路也很简单,1.先判断 div目录是否存在,不存在则创建:2.判断子目录 div/css 是否存在,不能存在则创建,3.在第二步中以子目录作为参数递归调用函数本身.也可以按相反顺序来,1.先判断最底层目录div/css/layout是否存在:2.判断di

python创建多级目录的基本格式

1 def mkdir(title):# 创建多级目录的基本格式 2 path = title.strip() #确定不含空格可以不加 3 isExists = os.path.exists('E:\\py\\xmly\\'+path)# 参数是绝对路径 4 # r'E:\py\xmly\\' r起到转义的作用(末尾必须双斜杠)等同于'E:\\py\\xmly\\' 需要转义的字符前加\ 5 # os.path.join(r'E:\xmly\py\\',path) 作用是拼接路径,也可以'E:\

php mkdir创建多级目录

先介绍一下 mkdir() 这个函数: mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权: 第三个参数:true表示允许创建多级目录. 举例代码(支持创建中文目录): <?php header("Content-type:text/html;charset=utf-8"); //要创建的多级目录 $path="dai/php/php学习"; //

【转】php利用mkdir创建多级目录

先介绍一下 mkdir() 这个函数: mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权: 第三个参数:true表示允许创建多级目录. 举例代码(支持创建中文目录): <?php header("Content-type:text/html;charset=utf-8"); //要创建的多级目录 $path="dai/php/php学习"; //

php创建多级目录完整封装类操作

创建多级目录函数中调用创建指定下的指定文件的函数: public function create_dir($dir,$mode=0777) { return is_dir($dir) or ($this->create_dir(dirname($dir)) and mkdir($dir, $mode)); } 创建指定路径下的指定文件,string $path(需要包含文件名和后缀),boolean $over_write 是否覆盖文件,int $time 设置时间.默认是当前系统时间,int

PHP递归创建多级目录(一道面试题的解题过程)

今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告. echo $dir."创建成功<br>"; //输出创建成功的目录 }else{ $dirArr=explode('/',$dir); /

Java File类 mkdir 不能创建多层目录,如果是多层,可以调mkdirs

public static void createDir(String destDirName) { File dir = new File(destDirName); if (!dir.exists()) {// 判断目录是否存在 dir.mkdir(); //dir.mkdirs(); //多层目录需要调用mkdirs } }   注意:在JavaFile类 的mkdir方法的实现中,不能同时创建多层目录,如果是多层,可以调mkdirs!

PHP 检查并创建多级目录

<?php //检查并创建多级目录    function checkDir($path){        $pathArray = explode('/',$path);        $nowPath = '';        array_pop($pathArray);        foreach ($pathArray as $key=>$value){            if ( ''==$value ){                unset($pathArray[$ke