php怎么自定义mkdir创建目录

发布网友 发布时间:2022-04-21 23:54

我来回答

3个回答

懂视网 时间:2022-04-29 13:23

PHPmkdir如何创建多级目录

首先,我们来说明一下可能很多朋友认为只要给一个路径,mkdir就可以创建文件夹,其实并不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?

手册上的有关mkdir的描述,如下:

说明

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

尝试新建一个由 pathname 指定的目录。

注意:也许想用八进制数指定模式,也就是说该数应以零打头,模式也会被当前的 umask 修改,可以用 umask() 来改变。

注意:mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。

默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。

(免费学习视频教程推荐:php视频教程)

例 1. mkdir() 例子

<?php
mkdir("/path/to/my/dir", 0700);
?>

如果成功则返回 TRUE,失败则返回 FALSE。

注意: 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封装协议。参见附录 N 的列表看看 rmdir() 支持哪些 URL 封装协议。

注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见参考 CLX, Stream Functions。

注意: recursive 参数是 PHP 5.0.0 添加的。

注意: 当安全模式被激活时,PHP 将检查被操作的目录是否和正在执行的脚本有相同的 UID(所有者)。

以上是PHP5手册上的描述信息,即你可以这样:mkdir('./test',0777)就能创建一个文件夹了。但是如何递归创建多级目录呢?

其方式有:

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

2、自己写一个递归创建多级目录。

这里,我对第二种方式作一点说明,也有两种方式,如下:

第一种(用mkdirs来产生多级父级)

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);
}

说明:
1、首先 简单说一下mkdir()与mkdirs()的区别,以及,is_dir和dirname():

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

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

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

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

2、大致流程为:

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

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

热心网友 时间:2022-04-29 10:31

  PHP中,mkdir函数的功能是创建目录。如果想自定义,或者个性化设计创建目录,可以将该函数封装到方法中,然后调用方法来创建目录。具体操作步骤如下:

自定义,创建目录方法;

/**
 * 自定义目录创建方法
 * @param String $path 目录路径
 * @param boolean $level 多级目录(true:是;false:否)
 * @param boolean $cn 目录名称是否存在中文(true:是;false:否)
 * @return boolean
 */
function create_dir($path,$level=false,$cn=false){
    //首先判断是否存在该目录
    if(is_dir($path)){
        return false;
    }
    //判断判断要创建的目录是否存在中文
    if($cn){
        $path=mb_convert_encoding($path, "GBK","UTF-8");
        $result=mkdir($path,0777,$level);
    }else{
        $result=mkdir($path,0777,$level);
    }
    if($result){
        return true;
    }else{
        return false;
    }
    
}

     2.调用方法测试:

<?php
header("Content-type:text/html;charset=utf-8;");
$path="chinawinxp/web/php编程示例";
$is=create_dir($path,true,true);
if($is){
    echo "目录创建成功!";
}else{
    echo "目录创建失败,或者目录已存在!";
}

运行结果:

热心网友 时间:2022-04-29 11:49

在php程序中,可以使用mkdir() 函数来创建目录,比如在当前目录下创建test的目录 代码如下: 有时仅通过mkdir();并不能实现需求,并且ab目录也不存在的时候,此时不得不通过递归的方法来建立多层目录。 代码如下:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com