欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php 刪除指定文件夾的實(shí)例講解

 更新時(shí)間:2017年07月25日 08:22:15   投稿:jingxian  
下面小編就為大家?guī)?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

詳情參考:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp

3、代碼構(gòu)成

**
 * [delAllFile description] 刪除指定目錄
 * @param [type] $dirName [description] 目錄
 * @param [type] $file [description] 記錄的過(guò)程文件
 * @param integer $type [description] 第一次默認(rèn)打開(kāi)新文件,第二次調(diào)用不打開(kāi)
 * @return [type]   [description]
 */
public function delAllFile($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");
 }
}

/**
 * [checkDir description] 檢測(cè)文件夾是否為空,為空直接刪除
 * @param [type] $dirName [description] 文件夾名
 * @return [type]   [description]
 */
private function checkDir($dirName) {
 $a = scandir($dirName);//列出 images 目錄中的文件和目錄:
 //只包含.和..目錄的文件夾為空文件夾
 if(sizeof($a) == 2){
 rmdir($dirName);
 return false;
 }
 return true;
}
/**
 * [delFile description] 上傳文件的方法
 * @param [type] $dirName [description] 目錄
 * @param [type] $file [description] 記錄的文件
 * @return [type]   [description]
 */
private function delFile($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 次<br/><hr/>";
 $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 刪除指定文件夾的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論