php使用mkdir建立多級目錄的方法

來源:互聯網
上載者:User
  1. mkdir("/path/to/my/dir", 0700);
  2. ?>
複製代碼

如果成功則返回 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來產生多級父級)

  1. function mkdirs($dir, $mode = 0777)
  2. {
  3. if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
  4. if (!mkdirs(dirname($dir), $mode)) return FALSE;
  5. return @mkdir($dir, $mode);
  6. }
複製代碼

說明:1.首先 簡單說一下mkdir()與mkdirs()的區別,以及,is_dir和dirname():mkdir() 只能在已經存在的目錄中建立建立檔案夾(即父級必須有才行)。mkdirs() 可以在不存在的目錄中建立檔案夾。諸如:a\\b,既可以建立多級目錄。dirname()是返迴路徑中的目錄部分。is_dir()用於判斷給出的檔案名稱是否是一個有效目錄

2.大致流程為:(1) 先用is_dir判斷是否已是一個檔案夾,如果是則返回TRUE。如沒有(或者不是檔案夾),則試著建立它,當然有可以父級不存在,那mkdir直接就創不成功,但也為不報錯,所以就用@來抑止報非致命錯誤。

(2)如果傳參數都不滿足條件,那麼就進入第二個if語句,先是取得路徑中的目錄部分,當然有可能是不存在的多級父級,所以用了mkdirs()來先建立父級,如果成功(不成功返回FALSE),那麼再用mkdir來建立最終的目錄了。

好了,以上就是第一種方案。

第二種(說明:此方案是相當的精簡,那是相當的不錯的方案,推薦使用它)

  1. function create_folders($dir){
  2. return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
  3. }
複製代碼

說明:大致流程: 得到路徑後,先判斷是否已是一個有效檔案目錄,如是則返回,結束程式。如果不是,(由於這裡用了OR作先擇性的條件,即只要滿足其中一個條件就行),則遞迴再調用自身,並且傳入的路徑中,少一級目錄。這樣來先回到上級有的父級目錄中,再用mkdir來建立下一級的。

好了,以上就是用PHP來建立檔案夾(以及多級檔案夾)的方法。^_^

總結: 1.用PHP5中內建的mkdir 中的一個新的參數 recursive ,通過設定 recursive 為 true 可以實現遞迴建立目錄的目的,但是對PHP4就不行了。2.自己寫的方法中,用mkdirs來建立多級父級目錄方式3.仍然可以用mkdir很巧妙的來建立多級檔案夾。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.