当前位置:   article > 正文

php 创建文件夹_php创建文件夹

php创建文件夹
function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!$this->mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
chmod($dir, 777); //给目录操作权限
return true; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

开始时我认为,只要给一个路径,mkdir就可以创建文件夹,但是事实并不是那样,单个的mkdir只能创建一级目录,对于多级的就不行了。
1. 使用PHP5新增方法
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

说明:

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
  • 2
  • 3

说明:

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

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

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

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

3.仍然可以用mkdir很巧妙的来创建多级文件夹。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号