php删除目录与中文目录代码

要删除目录我们必须先删除目录中的文件才行,在php中删除文件很简单unlink(),删除空目录使用rmdir即可.

例1,代码如下:

  1. function del_dir($dir){
  2. {
  3. if (!$dir) { return ; }
  4. $cacheDir = $dir;
  5. $dh = opendir($cacheDir);
  6. while ( $file = readdir($dh) ) {
  7. //开源代码phpfensi.com
  8. if (($file == '.') || ($file == '..')) { continue; }
  9. if (file_exists( $cacheDir .'/'.$file)) {
  10. if(is_dir( $cacheDir .'/'.$file)){
  11. del_dir($cacheDir .'/'.$file);
  12. }elseif (!unlink($cacheDir .'/'. $file)) {
  13. //删除完操作
  14. }
  15. }
  16. }
  17. }
  18. }

例2,代码如下:

  1. function deldir($dir) {
  2. //先删除目录下的文件:
  3. $dh=opendir($dir);
  4. while ($file=readdir($dh)) {
  5. if($file!="." && $file!="..") {
  6. $fullpath=$dir."/".$file;
  7. if(!is_dir($fullpath)) {
  8. unlink($fullpath);
  9. } else {
  10. deldir($fullpath);
  11. }
  12. }
  13. }
  14. closedir($dh);
  15. //删除当前文件夹:
  16. if(rmdir($dir)) {
  17. return true;
  18. } else {
  19. return false;
  20. }
  21. }
  22. ?>

例3,代码如下:

  1. function removeDir($dirName)
  2. {
  3. if(!is_dir($dirName)) //如果传入的参数不是目录,则为文件,应将其删除
  4. {
  5. @unlink($dirName);//删除文件
  6. return false;
  7. }
  8. $handle = @opendir($dirName); //如果传入的参数是目录,则使用opendir将该目录打开,将返回的句柄赋值给$handle
  9. while(($file = @readdir($handle)) !== false) //这里明确地测试返回值是否全等于(值和类型都相同)FALSE,否则任何目录项的名称求值为 FALSE 的都会导致循环停止(例如一个目录名为“0”)。
  10. {
  11. if($file!='.'&&$file!='..') //在文件结构中,都会包含形如“.”和“..”的向上结构,但是它们不是文件或者文件夹
  12. {
  13. $dir = $dirName . '/' . $file; //当前文件$dir为文件目录+文件
  14. is_dir($dir)?removeDir($dir):@unlink($dir); //判断$dir是否为目录,如果是目录则递归调用reMoveDir($dirName)函数,将其中的文件和目录都删除;如果不是目录,则删除该文件
  15. }
  16. }
  17. closedir($handle);
  18. return rmdir($dirName) ;
  19. }

例4,删除几天前创建的目录,代码如下:

  1. function delfile($dir,$n) //删除DIR路径下N天前创建的所有文件;
  2. {
  3. if(is_dir($dir))
  4. {
  5. if($dh=opendir($dir))
  6. {
  7. while (false !== ($file = readdir($dh)))
  8. {
  9. if($file!="." && $file!="..")
  10. {
  11. $fullpath=$dir."/".$file;
  12. if(!is_dir($fullpath))
  13. {
  14. $filedate=date("Y-m-d", filemtime($fullpath));
  15. $d1=strtotime(date("Y-m-d"));
  16. $d2=strtotime($filedate);
  17. $Days=round(($d1-$d2)/3600/24);
  18. if($Days>$n)
  19. unlink($fullpath); ////删除文件
  20. }
  21. }
  22. }
  23. }
  24. closedir($dh);
  25. }
  26. }
  27. ?>