程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php rmdir使用遞歸函數刪除非空目錄,rmdir遞歸

php rmdir使用遞歸函數刪除非空目錄,rmdir遞歸

編輯:關於PHP編程

php rmdir使用遞歸函數刪除非空目錄,rmdir遞歸


我們大家都知道,php rmdir()函數用於刪除空目錄,但如果要刪除非空目錄,我們必須將非空目錄中的文件或子目錄刪除,本文章向大家介紹php如何使用遞歸函數刪除非空目錄,需要的朋友可以參考一下。
首先向大家介紹一下rmdir()函數。

php rmdir()函數

rmdir — 刪除空目錄

語法:

bool rmdir ( string $dirname [, resource $context ] ) 

嘗試刪除 dirname 所指定的目錄。 該目錄必須是空的,而且要有相應的權限。 失敗時會產生一個E_WARNING級別的錯誤。
參數:

    • dirname:目錄的路徑。 
    • context:在 PHP 5.0.0 中增加了對上下文(Context)的支持。

 

php rmdir()刪除非空目錄

上面已經說過,rmdir()函數只能刪除空目錄,如果是非空目錄就需要先進入到目錄中,使用unlink()函數將目錄中的每個文件都刪除掉,再回來將這個空目錄刪除。如果目錄中還存在子目錄,而且目錄也非空,就需要使用遞歸的方法。自定義遞歸函數刪除目錄的源代碼如下:

<?php
/* 作者:碼農教程  http://www.manongjc.com/article/27.html  */
function delDir($directory){//自定義函數遞歸的函數整個目錄
    if(file_exists($directory)){//判斷目錄是否存在,如果不存在rmdir()函數會出錯
        if($dir_handle=@opendir($directory)){//打開目錄返回目錄資源,並判斷是否成功
            while($filename=readdir($dir_handle)){//遍歷目錄,讀出目錄中的文件或文件夾
                if($filename!='.' && $filename!='..'){//一定要排除兩個特殊的目錄
                    $subFile=$directory."/".$filename;//將目錄下的文件與當前目錄相連
                    if(is_dir($subFile)){//如果是目錄條件則成了
                        delDir($subFile);//遞歸調用自己刪除子目錄
                    }
                    if(is_file($subFile)){//如果是文件條件則成立
                        unlink($subFile);//直接刪除這個文件
                    }
                }
            }
            closedir($dir_handle);//關閉目錄資源
            rmdir($directory);//刪除空目錄
        }
    }
}

delDir("mydir");//調用delDir函數

?>

處理遞歸刪除非空目錄外,我們也可以使用操作系統命令“rm -rf”刪除非空的目錄,但也要從安全和跨平台方面考慮盡量不要去使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved