ホームページ >バックエンド開発 >PHPチュートリアル >ディレクトリ内のすべてのファイルを削除する方法(最下位のディレクトリを残す)

ディレクトリ内のすべてのファイルを削除する方法(最下位のディレクトリを残す)

WBOY
WBOYオリジナル
2016-06-13 13:09:231412ブラウズ

ディレクトリ配下のすべてのファイルを削除する(最上位ディレクトリは残す)方法
ディレクトリ配下のディレクトリとファイルを削除したいのですが、最上位ディレクトリは残しておきます。 どういうことかというと、/upload/ 配下のディレクトリとファイルをすべて削除したいのです。ただし、/upload ディレクトリは保持します。
次の関数は、/upload ディレクトリも削除します

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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 コード
// 現在のフォルダーを削除します。
/* if(rmdir($dir)) {
        true を返します。
    } それ以外 {
        false を返します。
    }
*/
<br><font color="#e78608">------解決策---------</font><br>
PHP コード
関数 delDir($dir) {
    // 最初にディレクトリ内のファイルを削除します。
    $dh=opendir($dir);
    while ($file=readdir($dh)) {
        if($file!="." && $file!="..") {
            $fullpath=$dir."/".$file;
            if(!is_dir($fullpath)) {
                リンクを解除($フルパス);
            } それ以外 {
                delDir($フルパス);
            }
        }
    }

    閉じられたir($dh);

}
<br><font color="#e78608">------解決策---------</font><br>
PHP コード
関数 delDir($dir) {
  $t = 配列();
  $dh = オープンディレクトリ($dir);
  while ($file=readdir($dh)) {
    if($file!="." && $file!="..") {
      $fullpath=$dir."/".$file;
      if(!is_dir($fullpath)) {
        リンク解除($フルパス);
      } それ以外 {
        delDir($フルパス);
        $t[] = $fullpath; //ディレクトリが占有されているため、削除できません。保存してください
      }
    }
  }
  閉じられたir($dh);
  if($t) array_map('rmdir', $t);//すべてのサブディレクトリを削除します
}
<br><font color="#e78608">------解決策---------</font><br>または、ディレクトリを削除するときにアップロードするかどうかを判断するはい、削除しないでください
<br><font color="#e78608">------解決策---------</font><br>元の関数内 <br> } else {<br> delDir($fullpath);//ここではdelDirの戻り値は受け付けません<br> }<br>返しても意味がありません。したがって、return を書きませんでした<br><br>戻る必要がある場合は、これを実行する必要があります
PHP コード
関数 delDir($dir) {
  $t = 配列();
  $r = true;
  $dh = オープンディレクトリ($dir);
  while ($file=readdir($dh)) {
    if($file!="." && $file!="..") {
      $fullpath=$dir."/".$file;
      if(!is_dir($fullpath)) {
        リンク解除($フルパス);
      } それ以外 {
        $r &= delDir($fullpath);
        $t[] = $fullpath; //ディレクトリが占有されているため、削除できません。保存してください
      }
    }
  }
  閉じられたir($dh);
  if($t) foreach($t as $f) $r &= rmdir($f);//すべてのサブディレクトリを削除
  $r を返します。
<div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。