使用scandir时,如何跳过我无权读取/访问的文件,以避免所有记录的错误?

问题描述

我使用scandir()在计算机上搜索目录。我还尝试了DirectoyIterator exact 相同的结果(它似乎在内部使用scandir())。一些子目录显然具有特殊权限,因为它们会用以下内容污染我的错误日志:

scandir(C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Configuration,C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Configuration): Access is denied. (code: 5)

我不需要搜索该目录,但是scanddir()可以完成它的工作而无需我根据目录名或名称进行任何检查,例如is_readablecontinue像这样的东西。

谁知道我没有“访问权”的其他目录?逐个命名它们很容易成为噩梦,这就是为什么我只想跳过那些会记录错误内容。但是,即使我想一个个地命名它们,也不能这样做,因为scandir()显然没有配置它的方法。 (我可以从手册中得知。)

解决方法

您可以使用* Expected kind `* -> Constraint',but `Int' has kind `*' * In the type signature: replica :: Int a => a -> a 来检查您是否具有权限。如果不是,则需要确保目录具有读取权限。

检查此链接:https://www.php.net/manual/fr/function.is-readable.php