ホームページ >バックエンド開発 >PHPチュートリアル >ディレクトリ内のすべてのファイルを削除する方法(最下位のディレクトリを残す)
ディレクトリ配下のすべてのファイルを削除する(最上位ディレクトリは残す)方法
ディレクトリ配下のディレクトリとファイルを削除したいのですが、最上位ディレクトリは残しておきます。 どういうことかというと、/upload/ 配下のディレクトリとファイルをすべて削除したいのです。ただし、/upload ディレクトリは保持します。
次の関数は、/upload ディレクトリも削除します
<!-- 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; } }
// 現在のフォルダーを削除します。 /* if(rmdir($dir)) { true を返します。 } それ以外 { false を返します。 } */ <br><font color="#e78608">------解決策---------</font><br>
関数 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>
関数 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>戻る必要がある場合は、これを実行する必要があります
関数 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>