相关疑难解决方法(0)

Directory.EnumerateFiles => UnauthorizedAccessException

.NET 4.0中有一个很好的新方法,可以通过枚举以流方式获取目录中的文件.

这里的问题是,如果想要枚举所有文件,可能事先不知道哪些文件或文件夹受到访问保护并且可能抛出UnauthorizedAccessException.

要重现,可以运行此片段:

foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
   // whatever
}
Run Code Online (Sandbox Code Playgroud)

在此.NET方法存在之前,通过在字符串数组返回方法上实现递归迭代器,可以实现大致相同的效果.但它并不像新的.NET方法那么懒惰.

那么该怎么办?使用此方法时,UnauthorizedAccessException可以被抑制还是生活中的事实?

在我看来,该方法应该有一个重载接受一个动作来处理任何异常.

.net filesystems lazy-evaluation unauthorizedaccessexcepti

37
推荐指数
3
解决办法
1万
查看次数