.NET 4.0中有一个很好的新方法,可以通过枚举以流方式获取目录中的文件.
这里的问题是,如果想要枚举所有文件,可能事先不知道哪些文件或文件夹受到访问保护并且可能抛出UnauthorizedAccessException.
要重现,可以运行此片段:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
// whatever
}
Run Code Online (Sandbox Code Playgroud)
在此.NET方法存在之前,通过在字符串数组返回方法上实现递归迭代器,可以实现大致相同的效果.但它并不像新的.NET方法那么懒惰.
那么该怎么办?使用此方法时,UnauthorizedAccessException可以被抑制还是生活中的事实?
在我看来,该方法应该有一个重载接受一个动作来处理任何异常.