扣丁學(xué)堂詳解php如何刪除指定文件夾及代碼
2018-02-01 13:31:34
1556瀏覽
今天扣丁學(xué)堂給大家總結(jié)帶來(lái)一篇php刪除指定文件夾的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望能幫助到大家。
1、前言
目標(biāo):php刪除一個(gè)指定目錄,所使用的的php函數(shù):is_dir,opendir,readdir,scandir,rmdir,closedir,等等(注:其他文件操作函數(shù)也可以完成,這里只列舉了本次使用的函數(shù))
2、相關(guān)函數(shù)介紹
php文件操作的方法大致相同,已經(jīng)在上一篇介紹過(guò)了,這里就不在重復(fù)介紹,這里就介紹一個(gè)新函數(shù)
rmdir
3、代碼構(gòu)成
*[delAllFiledescription]刪除指定目錄
*@param[type]$dirName[description]目錄
*@param[type]$file[description]記錄的過(guò)程文件
*@paraminteger$type[description]第一次默認(rèn)打開(kāi)新文件,第二次調(diào)用不打開(kāi)
*@return[type][description]
*/
publicfunctiondelAllFile($dirName,$file,$type=1){
$re=$this->checkDir($dirName);
//默認(rèn)第一次打開(kāi)文件
if($type){
$file=fopen($file,'w');//打開(kāi)日志文件
}
if($re){
$this->delFile($dirName,$file);
}else{
fwrite($file,"{$dirName}清理完成\r\n");
}
}
?/**
*[checkDirdescription]檢測(cè)文件夾是否為空,為空直接刪除
*@param[type]$dirName[description]文件夾名
*@return[type][description]
*/
privatefunctioncheckDir($dirName){
$a=scandir($dirName);//列出images目錄中的文件和目錄:
//只包含.和..目錄的文件夾為空文件夾
if(sizeof($a)==2){
rmdir($dirName);
returnfalse;
}
returntrue;
}
/**
*[delFiledescription]上傳文件的方法
*@param[type]$dirName[description]目錄
*@param[type]$file[description]記錄的文件
*@return[type][description]
*/
privatefunctiondelFile($dirName,$file){
$dh=openDir($dirName);
while($handle=readdir($dh)){
if($handle=='.'||$handle=='..'){
continue;
}
$resource=$dirName.'/'.$handle;
//判斷是否是文件夾
if(is_dir($resource)){
//判斷文件夾是否為空
$re=$this->checkDir($dirName);
if($re){
$this->delAllFile($resource,$file,0);
}else{
fwrite($file,"{$resource}清理完成\r\n");
continue;
}
}else{
unlink($resource);
}
}
//關(guān)掉資源,刪除目錄
closedir($dh);//關(guān)閉目錄資源
fwrite($file,"{$dirName}清理完成\r\n");
rmdir($dirName);//刪除空目錄
}
然而,上面的代碼遇到子目錄層級(jí)高的時(shí)候,就容易出現(xiàn)一個(gè)警告,導(dǎo)致目錄無(wú)法刪除
故對(duì)于層級(jí)高的子集,需要在最后加上一個(gè)循環(huán)判斷,來(lái)判斷是否可以刪除,來(lái)避免這個(gè)錯(cuò)誤
////關(guān)掉資源,刪除目錄
//closedir($dh);//關(guān)閉目錄資源
//fwrite($file,"{$dirName}清理完成\r\n");
//rmdir($dirName);//刪除空目錄
//每次目錄層級(jí)高了就報(bào)錯(cuò),故加個(gè)循環(huán)處理
$i=1;
while($i){
$re=$this->checkDir($dirName);
echo"$dirName$i次
";
$i++;
if(!$re){
$i=0;
closedir($dh);//關(guān)閉目錄資源
fwrite($file,"{$dirName}清理完成\r\n");
}
}
加上這層可以避免無(wú)法刪除的情況(有時(shí)候刪不掉是權(quán)限的問(wèn)題)
4、結(jié)語(yǔ)
刪除一個(gè)目錄相對(duì)比較簡(jiǎn)單,基本步驟為:
1、判斷是否是目錄,是目錄則遞歸調(diào)用自己,否則直接刪除文件;
2、判斷目錄是否為空,不為空rmdir會(huì)拋出錯(cuò)誤;
3、文件權(quán)限的問(wèn)題(window,這個(gè)不是什么問(wèn)題)
以上就是詳解php如何刪除指定文件夾詳細(xì)內(nèi)容的介紹,希望對(duì)大家有幫助,最后想要了解更多關(guān)于PHP開(kāi)發(fā)發(fā)展前景趨勢(shì),請(qǐng)關(guān)注扣丁學(xué)堂官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的
PHP培訓(xùn)視頻教程系統(tǒng),通過(guò)千鋒扣丁學(xué)堂金牌講師在線錄制的一套
PHP視頻教程課程,讓你快速掌握PHP從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂PHP開(kāi)發(fā)工程師技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
PHP培訓(xùn)
PHP視頻教程
PHP從入門(mén)到精通
PHP學(xué)習(xí)路線圖
PHP開(kāi)發(fā)工程師