下面小編就為大家帶來一篇php 刪除指定資料夾的實例講解。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
1、前言
目標:php刪除一個指定目錄
所使用的php函數:is_dir,opendir,readdir,scandir,rmdir,closedir,等等(註:其他檔案操作函數也可以完成,這裡只列舉了本次使用的函數)
2、相關函數介紹
php檔案操作的方法大致相同,已經在上一篇介紹過了,這裡就不在重複介紹,這裡就介紹一個新函數
rmdir

#3、程式碼構成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | **
* [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" );
}
}
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
private function checkDir( $dirName ) {
$a = scandir( $dirName );
if (sizeof( $a ) == 2){
rmdir ( $dirName );
return false;
}
return true;
}
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 );
}
|
登入後複製
然而,上面的程式碼遇到子目錄層級高的時候,就容易出現一個警告,導致目錄無法刪除

故對於層級高的子集,需要在最後加上一個循環判斷,來判斷是否可以刪除,來避免這個錯誤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$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" );
}
}
|
登入後複製
加上這層可以避免無法刪除的情況(有時候刪除是權限的問題)
4、結語
刪除一個目錄相對比較簡單,基本步驟為:
1、判斷是否為目錄,是目錄則遞迴呼叫自己,否則直接刪除檔案;
2、判斷目錄是否為空,不為空rmdir會拋出錯誤;
3、檔案權限的問題(window,這不是什麼問題)
以上是關於php如何刪除指定資料夾的案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!