【发布时间】:2013-08-18 16:50:16
【问题描述】:
我有一个递归目录迭代器来从目录中选择文件。 SKIP_DOTS 允许我忽略“。”和 '..' 元素,但我也希望能够忽略 '__MACOSX' 目录和其他隐藏文件,例如 '.cache.php'
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$all_files = new RecursiveIteratorIterator($iterator);
还有其他答案 here 和 here 但只是想知道是否有更清洁的方法?
我希望PHP Manual - FilesystemIterator SetFlags 中会有一些东西,但似乎没有。
【问题讨论】:
-
你为什么希望有内置的东西?有特殊要求的时候,指望别人写几行代码是不是很不合理?在 Windows 系统中,您经常会看到特殊的
desktop.ini和Thumbs.db文件,它们是否也应该有一个特殊的标志? -
@Jon 我明白你的意思,但如果不是为了帮助常见用例,为什么还要包含“RecursiveDirectoryIterator::SKIP_DOTS”?
-
@Kiksy:处理点条目的幼稚程序会立即进入无限递归,所以几乎每个人都想过滤掉它们。更不用说点是适用于 PHP 运行的所有平台上支持的几乎所有文件系统的约定。