在學習本方法之前我們最rmdir();函數,這個函數就是根據指定的檔案路勁,刪除檔案或者是檔案夾,但是當刪除的是檔案夾,並且檔案夾裡面還有內容的時候,就會出現Directory not empty 的錯誤,這個怎麼來解決呢,現在我們就通過編寫一個函數來解決這個問題。
在本執行個體中使用到了php中比較重要的幾個檔案操作的函數,
1.opendir:如果該函數成功運行,將返回一組目錄流(一組目錄字元串),如果失敗將返回錯誤[error]。你可以在函數的最前面加上“@”來隱藏錯誤。
2.readdir:從目錄留裡面裡面的返回的結果是,首先是一個.(表示這個目錄,進入目錄開始讀取),返回..(表示已經在目錄中,正在讀取目錄中的檔案) 然後返迴文件或者檔案夾的名字,如果沒有則返回false
3.closedir:關閉目錄流
完整代碼:
代碼如下 |
複製代碼 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <?php function delDirAndFile($dirName,$flag) { if (@$handle = opendir ( "$dirName" )) { //如果該函數成功運行,將返回一組目錄流(一組目錄字元串),如果失敗將返回錯誤[error]。你可以在函數的最前面加上“@”來隱藏錯誤。 while ( false!==($item = readdir($handle))) { //從目錄留裡面裡面的返回的結果是,首先是一個.(表示這個目錄,進入目錄開始讀取),返回..(表示已經在目錄中,正在讀取目錄中的檔案) //然後返迴文件或者檔案夾的名字,如果沒有則返回false if ($item!= "." && $item != "..") { //這裡是當有檔案或者是檔案夾的時候開始做出判斷 if (is_dir("$dirName/$item" )) { //如果是檔案夾,遞迴都用 delDirAndFile("$dirName/$item"); } else { //否則就刪除檔案 if (unlink ( "$dirName/$item" )) //判斷檔案是不是刪除成功了 echo "刪除檔案 $dirName/$itemn"; } } } closedir ($handle );//關閉檔案目錄流 if($flag==true){ if (rmdir($dirName )) echo '目錄以及檔案刪除成功';//最後刪除輸入的檔案夾 } } } ?> <?php delDirAndFile("dd",false); ?> </body> </html> |
代碼的基本介紹在代碼中都有說明,現在我們來看看測試的結果:
執行前的檔案結構目錄
執行時頁面顯示結果:
執行之後的問價目錄結構: