怎麼刪除目錄上的所有檔案(保留最下階目錄)

來源:互聯網
上載者:User
如何刪除目錄下的所有檔案(保留最上階目錄)
我想刪除一個目錄下的目錄及檔案,但保留最上階目錄. 如何說, 要刪除/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;} 
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.