PHP:删除其中的文件夹和文件,但保留主目录

时间:2014-04-29 11:37:30

标签: php

我有一个目录/main,其中包含这些文件夹中的文件夹和文件。

我想保留目录/主要但删除其中的所有内容:

$di = new RecursiveDirectoryIterator('/main');

foreach (new RecursiveIteratorIterator($di) as $filename => $file) {
    if(!is_dir($filename)){
        unlink($filename);      
    }
};

这是删除文件夹中的文件,/main留下一个空文件夹列表,如何删除这些文件?

我知道这应该可以在循环中集成,我尝试了rmdir但没有成功。

2 个答案:

答案 0 :(得分:2)

试试此代码

更新的答案:

$dir = '/home/XXXXX/public_html/';
foreach(glob($dir.'*.*') as $v){

echo $v;
  //  unlink($v);
}



destroy_dir($dir);
function destroy_dir($dir) { 
    if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
        foreach (scandir($dir) as $file) { 
            if ($file == '.' || $file == '..') continue; 
            if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) { 
                chmod($dir . DIRECTORY_SEPARATOR . $file, 0777); 
                if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) return false; 
            }; 
        } 
        return rmdir($dir); 
    } 

此处未对代码进行测试。

答案 1 :(得分:0)

function delete_directory_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);
         else
            delete_directory($dirname.'/'.$file);    
      }
   }
   closedir($dir_handle);
   return true;
}