PHP mkdir建设文件夹实现要领理会
在开始之前,我先声名一下,也许很多伴侣与我一样以为只要给一个路径,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 假如乐成则返回 TRUE,失败则返回 FALSE。 例 2. mkdir() 例子 $dir = iconv("UTF-8", "GBK", "public/log"); if (!file_exists($dir)){ mkdir ($dir,0777,true); echo '建设文件夹log乐成'; } else { echo '需建设的文件夹log已经存在'; } iconv要领是为了防备中文乱码,担保可以建设辨认中文目次,不消iconv要领名目标话,将无法建设中文目次 mkdir要领的第一个参数是要建设的目次路径,第二个参数是指建设目次的权限,在windows体系下该参数会被忽略,第三个参数是指是否建设多级目次,默以为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) 声名: 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){ 声名: 1 大抵流程: 获得路径后,先判定是否已是一个有用的文件目次,如是则返回,竣事措施。假如不是,(因为这里用了OR作先择性的前提,即只要满意个中一个前提就行),则递归再挪用自身,而且传入的路径中,少一级目次。这样来先回到上级有的父级目次中,再用mkdir来建设下一级的。 好了,以上就是用PHP来建设文件夹(以及多级文件夹)的要领。_ 总结: 1 用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过配置 recursive 为 true 可以实现递归建设目次的目标,可是对PHP4就不可了。 2 本身写的要领中,用mkdirs来建设多级父级目次方法 3 如故用mkdir很奇妙的来建设 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |