PHP删除的目录都是空的所有文件和所有子目录

PHP删除的目录都是空的所有文件和所有子目录

问题描述:

这是我有,但其没有工作,也没有给我一个错误: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 
} 

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

UPDATE:

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

它改变了小于1KB的空文件(或文件,但它给了我尝试访问该目录的话说权限遭拒,每个目录时出错,所以它不会删除是次目录内的空目录或文件。

+0

如果您的其他语法正确,您还需要检查文件是否存在,然后删除 – Akintunde007

+0

,$ file永远不会为空。尝试如果(空(file_get_contents($文件))) –

empty($file)不检查,通过$file引用的文件是空的,它会检查变量$file是空的。也就是说,如果$file包含EM pty字符串""null然后empty($file)将返回true。由于您的$file包含非空字符串(文件的名称),因此无论文件内容如何,​​empty($file)都将始终返回false。你想检查filesize($file)是否为零。

+0

感谢您的帮助。我更新了用于删除文件的代码,但不会删除子目录内的空目录或空文件。请参阅上面的更新代码。 – compcobalt

+0

您需要'rmdir()'来删除一个目录。如果你想递归,你可以使用['RecursiveDirectoryIterator'](http://php.net/manual/en/class.recursivedireiteiteiterator.php)类。 –

+0

好吧,现在我完全失去了......让我看看我能否想出来......或者如果你有第二个给我写一个例子。 – compcobalt