色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

PHP mkdir創(chuàng)建文件夾實現(xiàn)方法解析

瀏覽:90日期:2022-09-08 17:23:07

在開始之前,我先說明一下,可能許多朋友與我一樣認為只要給一個路徑,mkdir就可以創(chuàng)建文件夾,其它不是那樣,單個的MKDIR只能創(chuàng)建一級目錄,對于多級的就不行了,那如何用mkdir來創(chuàng)建呢?先我抄一段手冊上的有關mkdir的描述,如下:

說明

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

嘗試新建一個由 pathname 指定的目錄。

注意也許想用八進制數(shù)指定模式,也就是說該數(shù)應以零打頭。模式也會被當前的 umask 修改,可以用 umask() 來改變。

注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成為可選項。

默認的 mode 是 0777,意味著最大可能的訪問權(quán)。有關 mode 的更多信息請閱讀 chmod() 頁面。

例 1. mkdir() 例子

<?phpmkdir('/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 ’創(chuàng)建文件夾log成功’;} else {echo ’需創(chuàng)建的文件夾log已經(jīng)存在’;}

iconv方法是為了防止中文亂碼,保證可以創(chuàng)建識別中文目錄,不用iconv方法格式的話,將無法創(chuàng)建中文目錄

mkdir方法的第一個參數(shù)是要創(chuàng)建的目錄路徑,第二個參數(shù)是指創(chuàng)建目錄的權(quán)限,在windows系統(tǒng)下該參數(shù)會被忽略,第三個參數(shù)是指是否創(chuàng)建多級目錄,默認為false參考鏈接:https://www.cnblogs.com/modou/p/5991365.html

注意: 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封裝協(xié)議。參見附錄 N 的列表看看 rmdir() 支持哪些 URL 封裝協(xié)議。

注意: 對 context 的支持是 PHP 5.0.0 添加的。有關 context 的說明見參考 CLX, Stream Functions。

注意: recursive 參數(shù)是 PHP 5.0.0 添加的。

注意: 當安全模式被激活時,PHP 將檢查被操作的目錄是否和正在執(zhí)行的腳本有相同的 UID(所有者)。

以上是PHP5手冊上的描述信息,即你可以這樣:mkdir(’./test’,0777)就能創(chuàng)建一個文件夾了。但是如何遞歸創(chuàng)建多級目錄呢?其方式有:

1 PHP5 下創(chuàng)建目錄函數(shù) mkdir 增加了一個新的參數(shù) recursive ,通過設置 recursive 為 true 可以實現(xiàn)遞歸創(chuàng)建目錄的目的,但是對PHP4就不行了。

2 自己寫一個遞歸創(chuàng)建多級目錄。

這里,我對第二種方式作一點說明,也有兩種方式,如下:

第一種(用mkdirs來產(chǎn)生多級父級)

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()的區(qū)別,以及,is_dir和dirname():

mkdir() 只能在已經(jīng)存在的目錄中創(chuàng)建創(chuàng)建文件夾(即父級必須有才行)。

mkdirs() 可以在不存在的目錄中創(chuàng)建文件夾。諸如:a//b,既可以創(chuàng)建多級目錄。

dirname() 是返回路徑中的目錄部分。

is_dir() 用于判斷給出的文件名是否是一個有效的目錄

2 大致流程為:

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

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

第二種(說明:此方案是相當?shù)木啠鞘窍喈數(shù)牟诲e的方案,推薦使用它)

function create_folders($dir){return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));}

說明: 1 大致流程: 得到路徑后,先判斷是否已是一個有效的文件目錄,如是則返回,結(jié)束程序。如果不是,(由于這里用了OR作先擇性的條件,即只要滿足其中一個條件就行),則遞歸再調(diào)用自身,并且傳入的路徑中,少一級目錄。這樣來先回到上級有的父級目錄中,再用mkdir來創(chuàng)建下一級的。

好了,以上就是用PHP來創(chuàng)建文件夾(以及多級文件夾)的方法。_

總結(jié):

1 用PHP5中自帶的mkdir 中的一個新的參數(shù) recursive ,通過設置 recursive 為 true 可以實現(xiàn)遞歸創(chuàng)建目錄的目的,但是對PHP4就不行了。

2 自己寫的方法中,用mkdirs來創(chuàng)建多級父級目錄方式

3 仍然用mkdir很巧妙的來創(chuàng)建

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: PHP
相關文章:
主站蜘蛛池模板: 99ri在线观看| 99久久精品国产片久人 | 久久亚洲精品中文字幕 | www亚洲成人| 天堂在线视频网站 | 玖玖国产在线观看 | 91亚洲综合 | 免费在线一区二区三区 | 久久国产精品免费一区二区三区 | 国产美女作爱视频 | 91精选视频在线观看 | 一区二区三区四区在线 | 国产一级毛片一区二区三区 | 欧美性色生活片天天看99 | 欧美jlzz18性欧美 | 国产在线视频区 | 在线成人a毛片免费播放 | 中国一级毛片在线观看 | 国产网曝手机视频在线观看 | 在线欧美视频 | 日本www高清免费视频观看 | 成人免费观看www在线 | 亚洲精品久久精品h成人 | 国产一成人精品福利网站 | 精品国产香港三级 | 中文字幕一区二区三区亚洲精品 | 国产精品线在线精品 | 91精品久久 | 99精品视频在线免费观看 | 欧美在线观看免费一区视频 | 91大神大战丝袜美女在线观看 | 久久久精品一区二区三区 | 香蕉久久夜色精品国产 | 免费观看成年的网站 | 国产免费怡红院视频 | 欧美日韩一区二区中文字幕视频 | 99久免费精品视频在线观看2 | 欧美日韩视频一区二区在线观看 | 成人公开免费视频 | 美国一级毛片不卡无毒 | 中文字幕无线码中文字幕网站 |