首頁 >後端開發 >php教程 >php中mkdir的使用方法介紹

php中mkdir的使用方法介紹

王林
王林轉載
2020-01-31 21:11:153379瀏覽

php中mkdir的使用方法介紹

PHPmkdir如何建立多層目錄

首先,我們來說明可能很多朋友認為只要給一個路徑,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() 頁面。

(免費學習影片教學推薦:php影片教學

範例1. mkdir() 範例

<?php
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 下創建目錄函數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是否使用is_dir是否使用is_dir是否可以先用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很巧妙的來創建

相關文章教程推薦:php教學

以上是php中mkdir的使用方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除