gpt4 book ai didi

php - 我可以让 RecursiveDirectoryIterator 跳过不可读的目录吗?

转载 作者:IT王子 更新时间:2023-10-28 23:52:11 25 4
gpt4 key购买 nike

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".")) as $file) {
echo "$file\n";
}

每当我尝试列出的目录中存在不可读的子目录时,是否有任何方法可以使此代码不抛出 UnexpectedValueException“无法打开目录:权限被拒绝”?

更新

foreach() 转换为 while() 并在 try() catch 中显式调用 Iterator::next() {} 没有帮助。这段代码:

$iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."));
while($iter->valid()) {
$file = $iter->current();
echo "$file\n";
try {
$iter->next();
} catch(UnexpectedValueException $e) {
}
};

如果存在不可读的子目录,则为无限循环。

最佳答案

显然,您可以将 $flags 参数传递给构造函数。只有 one flag in the docs ,但它完全符合您的要求:在 getChildren() 调用期间捕获异常并简单地跳转到下一个元素

将您的类创建代码更改为

new RecursiveIteratorIterator(
new RecursiveDirectoryIterator("."),
RecursiveIteratorIterator::LEAVES_ONLY,
RecursiveIteratorIterator::CATCH_GET_CHILD);

它应该可以工作

关于php - 我可以让 RecursiveDirectoryIterator 跳过不可读的目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com