《PHP實例:php 刪除指定文件夾的實例講解》要點:
本文介紹了PHP實例:php 刪除指定文件夾的實例講解,希望對您有用。如果有疑問,可以聯系我們。
PHP實例1、前言
PHP實例目標:php刪除一個指定目錄
PHP實例所使用的的php函數:is_dir,opendir,readdir,scandir,rmdir,closedir,等等(注:其他文件操作函數也可以完成,這里只列舉了本次使用的函數)
PHP實例2、相關函數介紹
PHP實例php文件操作的方法大致相同,已經在上一篇介紹過了,這里就不在重復介紹,這里就介紹一個新函數
PHP實例rmdir
PHP實例
PHP實例詳情參考:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp
PHP實例3、代碼構成
PHP實例
**
* [delAllFile description] 刪除指定目錄
* @param [type] $dirName [description] 目錄
* @param [type] $file [description] 記錄的過程文件
* @param integer $type [description] 第一次默認打開新文件,第二次調用不打開
* @return [type] [description]
*/
public function delAllFile($dirName, $file, $type = 1) {
$re = $this->checkDir($dirName);
//默認第一次打開文件
if($type){
$file = fopen($file, 'w');//打開日志文件
}
if($re){
$this->delFile($dirName, $file);
}else{
fwrite($file,"{$dirName}清理完成\r\n");
}
}
PHP實例
/**
* [checkDir description] 檢測文件夾是否為空,為空直接刪除
* @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);
}
}
//關掉資源,刪除目錄
closedir($dh);//關閉目錄資源
fwrite($file,"{$dirName}清理完成\r\n");
rmdir($dirName);//刪除空目錄
}
PHP實例然而,上面的代碼遇到子目錄層級高的時候,就容易出現一個警告,導致目錄無法刪除
PHP實例
PHP實例故對于層級高的子集,需要在最后加上一個循環判斷,來判斷是否可以刪除,來避免這個錯誤
PHP實例
// //關掉資源,刪除目錄
// closedir($dh);//關閉目錄資源
// fwrite($file,"{$dirName}清理完成\r\n");
//rmdir($dirName);//刪除空目錄
//每次目錄層級高了就報錯,故加個循環處理
$i = 1;
while($i){
$re = $this->checkDir($dirName);
echo "$dirName $i 次<br/><hr/>";
$i++;
if(!$re){
$i = 0;
closedir($dh);//關閉目錄資源
fwrite($file,"{$dirName}清理完成\r\n");
}
}
PHP實例加上這層可以避免無法刪除的情況(有時候刪不掉是權限的問題)
PHP實例4、結語
PHP實例刪除一個目錄相對比較簡單,基本步驟為:
PHP實例1、判斷是否是目錄,是目錄則遞歸調用自己,否則直接刪除文件;
PHP實例2、判斷目錄是否為空,不為空 rmdir會拋出錯誤;
PHP實例3、文件權限的問題(window,這個不是什么問題)
PHP實例以上這篇php 刪除指定文件夾的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持維易PHP.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/433.html