• php递归创建文件夹的两种方法


    1、前言

    php中 mkdir 只能创建一个目录(一级)而对于多级目录(创建一级目录时上级目录不存在)就会创建失败。所以在不确定目录级数的时候,我们就需要使用类似一级一级目录的检测,已保证目录创建成功;

    递归创建目录的思路:

    首先判断 dirname 是否是目录,如果是则尝试创建;

    如果失败,则尝试创建上一级目录,使用上一级目录继续 调用本身方法;

    2、采用分割目录的方法创建目录

    /**
     * [simpleBuilt 通过分割方式创建目录]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function simpleBuilt($dirname) 
    {
        //判断是否是目录,如果是尝试创建目录
        if(is_dir($dirname) || @mkdir($dirname, 0700)) {
            echo "{$dirname}创建成功".PHP_EOL;
        }else{
            $dirArr = explode('/', $dirname);
            array_pop($dirArr);//移除最后一项
            $newDirName = implode('/', $dirArr);
            $this->simpleBuilt($newDirName);//重新调用
            if(@mkdir($dirname, 0777)) {
                echo "{$dirname}创建成功".PHP_EOL;
            }
        }
    }

    3、使用dirname 方法进行创建

    string dirname ( string $path )
    给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。(自动去除最后一个子目录)

    /**
     * [commonBuilt 基于dirname的方法创建目录]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function commonBuilt($dirname)
    {
        if(is_dir($dirname) || @mkdir($dirname, 0777)) {
            echo "{$dirname}创建成功".PHP_EOL;
        }else{
            $this->commonBuilt(dirname($dirname));
            if(@mkdir($dirname, 0777)) {
                echo "{$dirname}创建成功".PHP_EOL;
            }
        }
    }
     

    4、使用dirname 方法进行创建(简化版)

    /**
     * [superBuilt  commomBuilt方法的简写方法]
     * @param  string $dirname [目录名称]
     * @return [type]          [description]
     */
    public function superBuilt($dirname)
    {
        return is_dir($dirname) or $this->superBuilt(dirname($dirname)) and mkdir($dirname, 0777);
    }

    pHP中逻辑运算符的优先级顺序:&& > || > and > or,即符号型>字母型,AND型>OR型

  • 相关阅读:
    python之面向对象编程
    python的模块引用和查找路径
    python的迭代器、生成器、三元运算、列表解析、生成器表达式
    python文件操作
    lesson4-图像分类-小象cv
    lesson3-神经序列模型I-小象
    fast ai环境配置
    YOLO
    lesson2-cnn-fastai
    mask-code-python
  • 原文地址:https://www.cnblogs.com/ImCehnyx/p/7781088.html
Copyright © 2020-2023  润新知