php mkdir与mkdirs 对目录的操作_PHP教程
PHP中使用mkdir创建多级目录的方法
2012-09-09 17:50:58| 分类: 默认分类
{
if(!is_dir($dir))
{
if(!$this->mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
chmod($dir, 777); //给目录操作权限
return true;
}
开始时我认为,只要给一个路径,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() 例子
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新增方法
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)); }
说明:
大致流程: 得到路径后,先判断是否已是一个有效的文件目录,如是则返回,结束程序。如果不是,(由于这里用了OR作先择性的条件,即只要满足其中一个条件就行),则递归再调用自身,并且传入的路径中,少一级目录。这样来先回到上级有的父级目录中,再用mkdir来创建下一级的。
好了,以上就是用PHP来创建文件夹(以及多级文件夹)的方法。^_^
总结:
1.用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。
2.自己写的方法中,用mkdirs来创建多级父级目录方式
3.仍然可以用mkdir很巧妙的来创建多级文件夹。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

無論是文章、論文或教程,任何文件的主要亮點都是標題,當然還有目錄。它描述了文件的大綱結構,以便使用者可以到達他們期待從文件中讀取的位置和內容。將目錄添加到大多數文件中以使它們看起來更專業也是一種最佳實踐。如今,一切都在網路上進行,人們使用Google文件來建立大多數文件。許多使用者仍然不確定如何在 google 文件中插入或新增目錄。因此,我們提出了這篇文章來解釋如何在Google文件中建立或插入目錄。如何在 Google Docs 插入目錄第 1 步:點擊此處前往 Google Docs 線上版。第 2 步:如

使用java的File.isDirectory()函數判斷檔案是否存在且為目錄類型在Java程式設計中,常常會遇到需要判斷一個檔案是否存在且為目錄類型的情況。 Java提供了File類別來操作檔案和目錄,其中的isDirectory()函數可以幫助我們判斷一個檔案是否是目錄類型。 File.isDirectory()函數是File類別中的一個方法,其作用是判斷目前Fil

PHP函數介紹—rename():重新命名檔案或目錄介紹:在PHP中,rename()函數用來重新命名檔案或目錄。它提供了一種簡單的方法來更改檔案或目錄的名稱。無論是單一檔案還是整個目錄,都可以使用這個函數進行重新命名操作。透過指定來源檔案或目錄的名稱以及目標名稱,可以輕鬆完成重新命名過程。語法:boolrename(string$source,str

linux檢視目錄是否為空的方法:1、進入linux終端機;2、透過執行「res=`ls -A $dir` if [ -z $res ];then echo "$dir ..."else echo "$ dir ..."fi」方法判斷目錄是否為空即可。

PHP中的glob()函數用來尋找檔案或目錄,是一種強大的檔案操作函數。它可以根據指定的模式匹配,返回檔案或目錄的路徑。 glob()函數的語法如下:glob(pattern,flags)其中,pattern表示要匹配的模式字串,可以是一個通配符表達式,如*.txt(匹配以.txt結尾的文件),或者是具體的文件路徑。 flags是一個可選參數,用來控制函數

微信讀書app手機版是一款非常不錯的閱讀軟體,這款軟體內提供的書籍作品非常多,隨時隨地想看就看一鍵搜尋線上閱讀,且都是官方正版授權的,不同類型的書籍整齊排序,享受舒適輕鬆的閱讀氣氛。切換不同情景的閱讀模式,每天不間斷更新最新的書籍章節,支持多端設備在線登錄,批量下載到書架上,有無網絡情況下一樣能看,讓大家從中發現更多知識,現在小編在線詳細為微信讀書夥伴們推送查看目錄的方法。 1.打開需要查看目錄的書籍,點擊書籍中間位置。 2.點選左下方的三條線圖示。 3.在彈出的視窗中,查看書籍目錄即

使用path/filepath.Dir函數取得檔案路徑的目錄部分在我們的日常開發過程中,經常會涉及到檔案路徑的處理。有時候,我們需要取得檔案路徑的目錄部分,也就是檔案所在資料夾的路徑。在Go語言中,可以使用path/filepath套件提供的Dir函數來實現這個功能。 Dir函數的簽章如下:funcDir(pathstring)stringDir函式接收一個字

以下是常見的Linux系統指令大全(按字母順序排列):alias:設定指令別名awk:文字處理工具,用於擷取和操作文字資料cat:連接檔案並列印到標準輸出cd:改變目前工作目錄chmod:修改檔案或目錄的權限chown:修改檔案或目錄的擁有者和所屬群組chroot:改變根檔案系統目錄cp:複製檔案或目錄cron:定時任務管理工具curl:用於下載或上傳檔案的命令列工具cut :按列提取文字資料date:顯示或設定係統日期和時間dd:複製和轉換檔案df:顯示檔案系統的磁碟使用情況diff:比較檔案或目
