PHP創(chuàng)建多級文件夾
2015.09.10 | 452閱讀 | 0條評論 | php
php函數(shù)中自帶mkdir就可以創(chuàng)建文件夾,但是只能創(chuàng)建一級目錄。如果創(chuàng)建aa/bb/cc多級目錄,是不支持的。
以下兩種方法能夠解決:
第一種PHP創(chuàng)建文件夾(用mkdirs來產(chǎn)生多級父級)
[php]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);
}
[/php]
大致流程為:(1)先用is_dir判斷是否已是一個文件夾,如果是則返回TRUE。如沒有(或者不是文件夾),則試著創(chuàng)建它,當然有可以父級不存在,那mkdir直接就創(chuàng)不成功,但也為不報錯,所以就用@來抑止報非致命錯誤。
(2)如果傳參數(shù)都不滿足條件,那么就進入第二個if語句,先是取得路徑中的目錄部分,當然有可能是不存在的多級父級,所以用了mkdirs()來先創(chuàng)建父級,如果成功(不成功返回FALSE),那么再用mkdir來創(chuàng)建最終的目錄了。
第二種PHP創(chuàng)建文件夾
[php]
function create_folders($dir){
return is_dir($dir) or (
create_folders(dirname($dir))
and mkdir($dir, 0777));
}
[/php]
1 大致流程:得到路徑后,先判斷是否已是一個有效的文件目錄,如是則返回,結(jié)束程序。如果不是,(由于這里用了OR作先擇性的條件,即只要滿足其中一個條件就行),則遞歸再調(diào)用自身,并且傳入的路徑中,少一級目錄。這樣來先回到上級有的父級目錄中,再用mkdir來創(chuàng)建下一級的。
第三種PHP創(chuàng)建文件夾(用新的參數(shù)來產(chǎn)生多級父級)
用PHP5中自帶的mkdir 中的一個新的參數(shù) recursive ,通過設(shè)置 recursive 為 true 可以實現(xiàn)遞歸創(chuàng)建目錄的目的,但是對PHP4就不行了。
[php]
mkdir("aa/bb/cc",0777,true);
[/php]
發(fā)表評論