(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() 页面。 例 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来创建最终的目录了。

好了,以上就是第一种方案。

第二种

(说明:此方案是相当的精简,那是相当的不错的方案,推荐使用它)

function create_folders($dir){
       return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
}

说明: 1 大致流程: 得到路径后,先判断是否已是一个有效的文件目录,如是则返回,结束程序。如果不是,(由于这里用了OR作先择性的条件,即只要满足其中一个条件就行),则递归再调用自身,并且传入的路径中,少一级目录。这样来先回到上级有的父级目录中,再用mkdir来创建下一级的。

好了,以上就是用PHP来创建文件夹(以及多级文件夹)的方法。^_^

for ($i=1;$i<20;$i++){
$dir="products/folder".$i;
        if (is_dir($dir)==false){mkdir($dir, 0777);}
     }

总结:
1.用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。

2.自己写的方法中,用mkdirs来创建多级父级目录方式

3.仍然用mkdir很巧妙的来创建,

转载于:https://www.cnblogs.com/kingangWang/archive/2011/12/19/2292923.html

PHP判断文件夹是否存在和创建文件夹的方法相关推荐

  1. python判断文件或文件夹是否存在、创建文件夹

    python判断文件或文件夹是否存在.创建文件夹 1.判断文件或文件夹是否存在 import os #返回值是个布尔类型的 os.path.exists("G:/软件/文件测试/test.p ...

  2. php往文件里面写入数据,PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解...

    本文实例讲述了PHP创建文件及写入数据(覆盖写入,追加写入)的方法.分享给大家供大家参考,具体如下: 这里主要介绍了PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码,需要的朋友可以参考下: 创 ...

  3. Java 判断文件夹、文件是否存在、否则创建文件夹

    1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...

  4. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  5. 在服务器上创建文件夹,在服务器上创建文件夹

    在服务器上创建文件夹 内容精选 换一换 在迁移之前必须先创建输入文件夹和输出文件夹,并将待迁移的所有SQL脚本复制到输入文件夹中.Linux系统操作如下:由于DSC批量无序地读取输出文件夹,因此,建议 ...

  6. 新建文件夹命令 linux,linux创建文件夹命令是什么

    linux创建文件夹命令是mkdir,语法为[mkdir (选项)(参数)],其中Z为设置安全上下文,当使用SELinux时有效,version显示版本信息. 本文操作环境:linux2.6.32系统 ...

  7. 在ftp服务器创建文件的命令,ftp服务器创建文件夹命令

    ftp服务器创建文件夹命令 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的.本章节以Windows 2012版本操作系统为例进行NFS ...

  8. Php创建文件夹mkdir,PHP mkdir创建文件夹实现方法解析

    这篇文章主要介绍了PHP mkdir创建文件夹实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在开始之前,我先说明一下,可能许多朋友与我 ...

  9. synology服务器如何建文件夹,Synology Assistant如何创建共享文件夹?新建共享文件夹流程介绍...

    作为群晖科技官方开发的局域网安装助手,能够安装并管理好 DiskStation 的资源,建立专属的共享文件夹,下面就跟小编来了解下吧. 创建共享文件夹: 首先我们需要打开文件工作站(File Stat ...

最新文章

  1. 关于学习Python的一点学习总结(32->隐藏及lambda)
  2. WakaTime数据同步展示工具
  3. 金蝶API apiEnv.apiSession.Token = GetToken()报错
  4. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
  5. Linux——userdel删除用户不完全问题
  6. 罗永浩回归!将开秋季旧机发布会:与iPhone 12同一天
  7. Python_列表2
  8. ubutntu 使用tftp_TI 816X开发板直接从SD卡读取内核到内存中和通过TFTP下载到内存中区别...
  9. 豆瓣评分9.9!国内外口碑炸裂的强化学习圣经中文版终于来了!
  10. webstorm破解
  11. 小白共享网盘系统源码V5.0
  12. 【计算机网络】网络层 : 数据交换方式 ( 电路交换 | 报文交换 | 分组交换 )★
  13. kero control 防火墙
  14. 七大人脉宝典造亿万富翁
  15. win定时关机_windows如何设置定时关机?
  16. PHP基础知识【大纲】
  17. cogs 944. [東方S3] 藤原妹红
  18. 代码改变生活-文件重命名
  19. PHP集群中SESSION共享方案之Redis
  20. 干货丨小米自研主动降噪技术在Redmi Buds Pro4上的应用

热门文章

  1. JavaScript习题(数组去重、有序数组乱序排列)
  2. VC++判断文件或文件夹是否存在(转)
  3. codeforces-1201 C Maximum Median
  4. dedecms 后台 菜单点击后打开的慢
  5. Qt 模态对话框不模态的问题
  6. Javascript高级程序设计3笔记 - 对象
  7. ERROR in ./src/css/1.scss 1:2
  8. 基于jQuery实现垂直轮播效果
  9. 实现背景透明的方法,兼容ie6/7/8等浏览器
  10. 入门机器学习(八)--神经网络参数的反向传播算法