教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

PHP创建多级文件夹

时间:2012-03-20 16:31来源:未知 作者:ken 点击:

php函数中自带mkdir就可以创建文件夹,但是只能创建一级目录。如果创建aa/bb/cc多级目录,是不支持的。

以下两种方法能够解决:

第一种PHP创建文件夹(用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)先用is_dir判断是否已是一个文件夹,如果是则返回TRUE。如没有(或者不是文件夹),则试着创建它,当然有可以父级不存在,那mkdir直接就创不成功,但也为不报错,所以就用@来抑止报非致命错误。
(2)如果传参数都不满足条件,那么就进入第二个if语句,先是取得路径中的目录部分,当然有可能是不存在的多级父级,所以用了mkdirs()来先创建父级,如果成功(不成功返回FALSE),那么再用mkdir来创建最终的目录了。

第二种PHP创建文件夹

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

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


第三种PHP创建文件夹(用新的参数来产生多级父级)
用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。

mkdir("aa/bb/cc",0777,true);

 

(责任编辑:ken)
TAG标签: mkdir cms ph
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容