我递归地遍历一堆目录。其中一些(如 D:\$RECYCLE.BIN\S-1-5-20)给我一个 System.UnauthorizedAccessException
。我想我可以捕获它并继续前进,但我宁愿提前弄清楚。
所以,当我有一个 DirectoryInfo
对象时。我如何查看是否允许我 GetDirectories()
并可能 Delete()
?
最佳答案
如果你打算删除它,尝试删除它然后继续(适当处理异常)。
如果您执行检查然后删除-if-should-be-able-to-delete,则文件系统上有可能出现竞争条件,无论多么轻微。这适用于大多数文件/目录访问操作。大多数文件系统操作都设计为原子操作,将此逻辑移动到用户代码中会与这种原子性冲突,而且仍然需要处理可能引发的异常。
关于C#:如何检查我是否可以读取和/或删除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604183/