在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,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。
例 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
参考链接:https://www.cnblogs.com/modou/p/5991365.html
注意: 自 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来创建文件夹(以及多级文件夹)的方法。_
总结:
1 用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。
2 自己写的方法中,用mkdirs来创建多级父级目录方式
3 仍然用mkdir很巧妙的来创建
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
问题内容: 我已经阅读了Node.js的文档,除非我错过了一些内容,否则它不会告诉某些操作(特别是)中包含哪些参数。正如您在文档中看到的那样,它不是很多。 当前,我有以下代码,该代码尝试创建一个文件夹或使用现有的文件夹: 但是我想知道这是正确的方法吗?检查代码是否正确知道文件夹已存在?我知道我可以在创建目录之前执行此操作,但这已经是对文件系统的两次打击。 其次,是否有Node.js的完整或至少更详
本文向大家介绍php文件夹的创建与删除方法,包括了php文件夹的创建与删除方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php文件夹的创建与删除方法。分享给大家供大家参考。具体如下: 1、创建文件夹 2、创建文件夹,递归式创建 3、删除文件夹 希望本文所述对大家的php程序设计有所帮助。
本文向大家介绍java实现ftp上传 如何创建文件夹,包括了java实现ftp上传 如何创建文件夹的使用技巧和注意事项,需要的朋友参考一下 java如何实现ftp上传?如何创建文件夹? 最佳答案: 准备条件:java实现ftp上传用到了commons-net-3.3.jar包 首先建立ftphost连接 然后再利用ftpclient的makeDirectory方法创建文件夹 断开host连接 最后
在Android Studio中提供了新建文件夹的功能,在这里可以新建一些缺省的文件夹.
我已经阅读了Node.js的文档,除非我遗漏了什么,否则它不会告诉某些操作中的参数包含什么,特别是。正如您在文档中看到的,这并不是很多。 其次,Node.js是否有完整的或至少更详细的文档,其中包含关于错误对象包含什么、参数表示什么等细节。
本文向大家介绍JS实现新建文件夹功能,包括了JS实现新建文件夹功能的使用技巧和注意事项,需要的朋友参考一下 每天一个JS 小demo之新建文件夹。主要知识点:DOM方法的综合运用 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。