PHP 检查文件夹是否为空
由于 PHP 的 rmdir
方法只能删除空文件夹,所以需要先判断文件夹是否为空。以下总结了2种检查文件夹是否为空的方法。
1. 使用 scandir 方法
scandir 方法会返回.
和 ..
2个元素,只需判断返回的列表长度是否为2。
private function isEmptyDir($dir)
{
$res = scandir($dir);
if ($res === false) {
return false;
}
return count($res) == 2;
}
2. 使用 FilesystemIterator 类
FilesystemIterator 迭代器的 valid 方法,检查当前文件是否为有效。
private function isEmptyDir($dir)
{
$iterator = new FilesystemIterator($dir);
$isDirEmpty = !$iterator->valid();
return $isDirEmpty;
}
慎用 glob 方法
注意:glob 方法有个缺陷,如果文件夹下面只存在一个以 . 点号开头的文件(也就是隐藏的文件),如 .code
,glob($dir . "/*")
将返回空数组,进而造成错误的判断,不建议使用 glob
判断。