php rmdir使用遞歸函數(shù)刪除非空目錄實(shí)例詳解
首先向大家介紹一下rmdir()函數(shù)。
php rmdir()函數(shù)
rmdir — 刪除空目錄
語法:
bool rmdir ( string $dirname [, resource $context ] )
嘗試刪除 dirname 所指定的目錄。 該目錄必須是空的,而且要有相應(yīng)的權(quán)限。 失敗時(shí)會產(chǎn)生一個(gè)E_WARNING級別的錯(cuò)誤。
參數(shù):
1.dirname:目錄的路徑。
2.context:在 PHP 5.0.0 中增加了對上下文(Context)的支持。
php rmdir()刪除非空目錄
上面已經(jīng)說過,rmdir()函數(shù)只能刪除空目錄,如果是非空目錄就需要先進(jìn)入到目錄中,使用unlink()函數(shù)將目錄中的每個(gè)文件都刪除掉,再回來將這個(gè)空目錄刪除。如果目錄中還存在子目錄,而且目錄也非空,就需要使用遞歸的方法。自定義遞歸函數(shù)刪除目錄的源代碼如下:
<?php
function delDir($directory){//自定義函數(shù)遞歸的函數(shù)整個(gè)目錄
if(file_exists($directory)){//判斷目錄是否存在,如果不存在rmdir()函數(shù)會出錯(cuò)
if($dir_handle=@opendir($directory)){//打開目錄返回目錄資源,并判斷是否成功
while($filename=readdir($dir_handle)){//遍歷目錄,讀出目錄中的文件或文件夾
if($filename!='.' && $filename!='..'){//一定要排除兩個(gè)特殊的目錄
$subFile=$directory."/".$filename;//將目錄下的文件與當(dāng)前目錄相連
if(is_dir($subFile)){//如果是目錄條件則成了
delDir($subFile);//遞歸調(diào)用自己刪除子目錄
}
if(is_file($subFile)){//如果是文件條件則成立
unlink($subFile);//直接刪除這個(gè)文件
}
}
}
closedir($dir_handle);//關(guān)閉目錄資源
rmdir($directory);//刪除空目錄
}
}
}
delDir("mydir");//調(diào)用delDir函數(shù)
?>
處理遞歸刪除非空目錄外,我們也可以使用操作系統(tǒng)命令“rm -rf”刪除非空的目錄,但也要從安全和跨平臺方面考慮盡量不要去使用。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
windows環(huán)境下php配置memcache的具體操作步驟
本篇文章是對windows環(huán)境下php配置memcache的具體操作步驟進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
解析使用ThinkPHP應(yīng)該掌握的調(diào)試手段
本篇文章是對使用ThinkPHP應(yīng)該掌握的調(diào)試手段進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
幾個(gè)優(yōu)化WordPress中JavaScript加載體驗(yàn)的插件介紹
這篇文章主要介紹了幾個(gè)優(yōu)化WordPress中JavaScript加載體驗(yàn)的插件,一般來說在WordPress中加載JavaScript最好使用wp_enqueue_script()函數(shù)以減少問題提高效率,需要的朋友可以參考下2015-12-12
php與flash as3 socket通信傳送文件實(shí)現(xiàn)代碼
這篇文章主要介紹了php與flash as3 socket通信傳送文件實(shí)現(xiàn)代碼,本文含AS3代碼和PHP代碼,需要的朋友可以參考下2014-08-08
PHP的構(gòu)造方法,析構(gòu)方法和this關(guān)鍵字詳細(xì)介紹
這篇文章介紹了PHP的構(gòu)造方法,析構(gòu)方法和this關(guān)鍵字,有需要的朋友可以參考一下2013-10-10

