PHP删除目录和任何子目录中的所有空文件

时间:2017-06-16 18:54:29

标签: php

这就是我所拥有的,但它不起作用,也没有给我一个错误:

$MyDir = "C:/some_folder/"; 

// DELETE ALL EMPTY FILES
$filesDVA = glob($MyDir.'*'); // get all file names
foreach($filesDVA as $file){ // iterate files
  if(empty($file))
    unlink($file); // delete file
}

我想删除主目录和子目录中的空文件,如果可能的话,检查目录是否也为空,如果它也是删除它。

更新:

foreach (glob($MyDir . '*') as $file) {
    if (is_writable($file) && filesize($file) < (1024 * 1)) {
        unlink($file);
    }
}

它删除了空文件(或小于1kb的文件,但是在尝试访问每个目录的权限被拒绝的目录时它会给我一个错误,因此它不会删除空目录或其中的文件子目录。

1 个答案:

答案 0 :(得分:3)

empty($file)不会检查$file引用的文件是否为空,它会检查变量 $file是否为空。即,如果$file包含空字符串""null,则empty($file)将返回true。由于您的$file包含非空字符串(文件名),因此empty($file)将始终返回false,而不管文件内容如何。您想检查filesize($file)是否为零。