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的空文件(或文件,但它给了我尝试访问该目录的话说权限遭拒,每个目录时出错,所以它不会删除是次目录内的空目录或文件。
empty($file)
不检查,通过$file
引用的文件是空的,它会检查变量$file
是空的。也就是说,如果$file
包含EM pty字符串""
或null
然后empty($file)
将返回true。由于您的$file
包含非空字符串(文件的名称),因此无论文件内容如何,empty($file)
都将始终返回false。你想检查filesize($file)
是否为零。
感谢您的帮助。我更新了用于删除文件的代码,但不会删除子目录内的空目录或空文件。请参阅上面的更新代码。 – compcobalt
您需要'rmdir()'来删除一个目录。如果你想递归,你可以使用['RecursiveDirectoryIterator'](http://php.net/manual/en/class.recursivedireiteiteiterator.php)类。 –
好吧,现在我完全失去了......让我看看我能否想出来......或者如果你有第二个给我写一个例子。 – compcobalt
如果您的其他语法正确,您还需要检查文件是否存在,然后删除 – Akintunde007
,$ file永远不会为空。尝试如果(空(file_get_contents($文件))) –