从文件夹中删除多个文件

时间:2011-05-19 08:07:41

标签: php

如何从文件夹中删除多个文件?

code:$query=$this->main_model->get($id);

if($query->num_rows()>0)
{
        foreach ($query->result() as $row)
        {
            unlink("uploads/".$id."/".$row->img_name);
            unlink("uploads/".$id."/".$row->img_name_tn);
            unlink("uploads/".$id."/".$row->file);
            unlink("uploads/".$id."/".$row->file2);
            unlink("uploads/".$id."/Thumbs.db");
        }
            rmdir("uploads/".$id);
}

这是我使用的代码,但它删除了一些文件。以及如何从文件夹中删除所有文件?

4 个答案:

答案 0 :(得分:4)

最初来自php.net:

<?php
 $dir = '/uploads/';
if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") { // strip the current and previous directory items
            unlink($dir . $file); // you can add some filters here, aswell, to filter datatypes, file, prefixes, suffixes, etc
        }
    }
    closedir($handle);
}
?>

答案 1 :(得分:2)

我在php.net找到了这个:

"The shortest recursive delete possible"

function rrmdir($path) {
   return is_file($path)?
     @unlink($path):
     array_map('rrmdir',glob($path.'/*'))==@rmdir($path)
   ;
}

答案 2 :(得分:1)

您需要使用递归函数。来自rmdir页面的评论已编写了有关如何执行此操作的功能,请参阅http://www.php.net/manual/en/function.rmdir.php#98622。此代码将删除文件夹及其中的所有内容。

<?php 
 function rrmdir($dir) { 
   if (is_dir($dir)) { 
     $objects = scandir($dir); 
     foreach ($objects as $object) { 
       if ($object != "." && $object != "..") { 
         if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); 
       } 
     } 
     reset($objects); 
     rmdir($dir); 
   } 
 } 
?>

答案 3 :(得分:1)

你可以这样做:

function delete_files($dirname) {
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);   
      }
   }
   closedir($dir_handle);
   return true;
}