如何删除目录下的所有文件(保留最上阶目录)
我想删除一个目录下的目录及文件,但保留最上阶目录. 如何说, 要删除/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)) { return true; } else { return false; } */ <br><font color="#e78608">------解决方案--------------------</font><br>
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); } <br><font color="#e78608">------解决方案--------------------</font><br>
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);//删除所有的子目录 } <br><font color="#e78608">------解决方案--------------------</font><br>或者在删除目录的时候 判断 是不是upload 是的话不删除 <br><font color="#e78608">------解决方案--------------------</font><br>在你原函数中<br> } else {<br> delDir($fullpath);//这里并没有承接delDir的返回值<br> }<br>返回是没有意义的。所以我没有书写返回<br><br>如需要返回要这样做
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; } <div class="clear"> </div>