您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中刪除一個目錄的方法是什么”,在日常操作中,相信很多人在PHP中刪除一個目錄的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中刪除一個目錄的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
rmdir()
函數刪除空目錄
在我們的日常使用中,就會經常遇到需要進行刪除文件的操作,在PHP中想要刪除目錄也是非常簡單的,通過PHP中的rmdir函數就能夠實現,接下來我們看一下rmdir()函數的額基本語法格式:
rmdir(string $dirname[, resource $context])
其中需要注意的是:
使用rmdir()函數來進行刪除目錄的操作,有一個前提,那就是這個需要刪除的目錄一定要是空
的,如果刪除的目錄不是空的話可能會返回一個錯誤。參數$dirname
表示的是要刪除的目錄路徑,參數$context
是用來規定文件句柄的環境的,是一個可選參數。
接下來我們通過示例來看一下通過rmdir()函數來進行刪除目錄,示例如下:
<?php $dir = './test/demo'; //判斷文件是否存在 if(is_dir($dir)){ if(rmdir($dir)) echo '目錄刪除成功'; }else{ echo "目錄不存在"; } ?>
接著我們在上文中舉到的例子,我們創建了一個在該文件同級目錄下名為test的目錄,并且test內還有一個名為demo的目錄,上述示例中便是想要通過rmdir函數來刪除名為demo的目錄,其中需要注意的是,這個名為demo的目錄是空的目錄,所以輸出結果:
已經成功的刪除了這個名為demo的空目錄,我們已經實現了能夠刪除目錄,但是這個目錄只是空的目錄,如果這個目錄不是空的,會出現什么結果呢?在我們的日常使用中,一般想要刪除一個文件夾直接就能歐刪除了,可是要是通過PHP的話還只能刪除空的目錄,要是想要刪除一個大目錄那豈不是特別的麻煩。
接下來我們就來看一下如果這個目錄不是空的,輸出結果會有什么變化,我們將上述示例中的$dir = './test/demo';
一個空的目錄換為一個不是空的目錄,來看一下會有什么變化,示例如下:
<?php $dir = 'C:\Users\Administrator\Desktop\1.0'; //判斷文件是否存在 if(is_dir($dir)){ if(rmdir($dir)) echo '目錄刪除成功'; }else{ echo "目錄不存在"; } ?>
輸出結果:
由上述示例我們能夠發現,通過rmdir()函數來進行刪除不是空的目錄不行,程序會報錯。這樣的話我們怎樣才能夠實現刪除一個不為空的目錄呢?
rmdir()
函數刪除非空目錄
上文章我們講到了rmdir只能夠刪除空目錄,面對非空目錄我們也并非束手無策。先理清思路逐個擊破。
首先我們需要進入到目錄中將目錄中的每一個文件都刪除掉,這時候我們需要使用unlink()
函數,當這里面的文件都刪除了這不就是一個空目錄了嘛,在使用rmdir()函數刪除就好了。
但是,有些時候目錄中并不全是文件,目錄中也有目錄,而這個二階目錄內可能也會存在文件或者又一個目錄,這時候想要刪除掉這個非空目錄就需要用到遞歸的方法了。
思路整理好了之后就可以想一想可能會用到的函數:
首先我們還是得需要file_exists
函數來判斷是否是目錄,然后我們再通過readdir()
函數來以數組的形式獲取目錄內的所有文件名,如果返回的結果數量超過兩個說明當前目錄不為空,其中就會用到if語句。
下面我們通過示例來看一下怎樣實現刪除一個非空目錄,示例如下:
<?php function delDir($directory) { // 自定義函數遞歸的函數整個目錄 if (file_exists($directory)) { // 判斷目錄是否存在,如果不存在rmdir()函數會出錯 if ($dir_handle = @opendir($directory)) { // 打開目錄返回目錄資源,并判斷是否成功 while ($filename = readdir($dir_handle)) { // 遍歷目錄,讀出目錄中的文件或文件夾 if ($filename != '.' && $filename != '..') { // 一定要排除兩個特殊的目錄 $subFile = $directory . "/" . $filename; //將目錄下的文件與當前目錄相連 // echo $subFile . "<br>"; if (is_dir($subFile)) { // 如果是目錄條件則成了 delDir($subFile); //遞歸調用自己刪除子目錄 } if (is_file($subFile)) { // 如果是文件條件則成立 unlink($subFile); //直接刪除這個文件 } } } closedir($dir_handle); //關閉目錄資源 rmdir($directory); //刪除空目錄 } } } delDir("./test"); //調用delDir函數 ?>
上述示例中顯示通過file_exists來判斷目錄是否存在,然后遍歷目錄獨處目錄中的文件或者文件夾,這時候需要排除通過readdir返回的特殊的目錄,接上來就是按著上文中的想法進行各個擊破。
示例中想要刪除在本文件同級目錄中的一個名為“test”的目錄,
運行程序之后:
由此我們便完成了通過rmdir()函數來進行刪除非空目錄的操作了。
到此,關于“PHP中刪除一個目錄的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。