如何刪除目錄下的所有檔案(保留最上階目錄)
我想刪除一個目錄下的目錄及檔案,但保留最上階目錄. 如何說, 要刪除/upload/下的所有目錄及檔案,但保留/upload目錄.
下面函數會把/upload目錄也刪除
PHP code
function delDir($dir) { //先刪除目錄下的檔案: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { delDir($fullpath); } } } closedir($dh); //刪除當前檔案夾: if(rmdir($dir)) { return true; } else { return false; }}
------解決方案--------------------
注釋上有寫:
PHP code
//刪除當前檔案夾:/* if(rmdir($dir)) { return true; } else { return false; }*/
------解決方案--------------------
PHP code
function delDir($dir) { //先刪除目錄下的檔案: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { delDir($fullpath); } } } closedir($dh);}
------解決方案--------------------
PHP code
function delDir($dir) { $t = array(); $dh = opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { delDir($fullpath); $t[] = $fullpath;//由於目錄被佔用,不能刪除。儲存起來 } } } closedir($dh); if($t) array_map('rmdir', $t);//刪除所有的子目錄}
------解決方案--------------------
或者在刪除目錄的時候 判斷 是不是upload 是的話不刪除
------解決方案--------------------
在你原函數中
} else {
delDir($fullpath);//這裡並沒有承接delDir的傳回值
}
返回是沒有意義的。所以我沒有書寫返回
如需要返回要這樣做
PHP code
function delDir($dir) { $t = array(); $r = true; $dh = opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { $r &= delDir($fullpath); $t[] = $fullpath;//由於目錄被佔用,不能刪除。儲存起來 } } } closedir($dh); if($t) foreach($t as $f) $r &= rmdir($f);//刪除所有的子目錄 return $r;}