当我尝试获取 a 时出现错误,DirectoryInfo
因为有一些只读文件和文件夹。
我怎样才能跳过它们?
var dirinfo = new DirectoryInfo(Path_Tb_Path.Text);
var entries = dirinfo.GetFileSystemInfos("**", SearchOption.AllDirectories);
当我尝试获取 a 时出现错误,DirectoryInfo
因为有一些只读文件和文件夹。
我怎样才能跳过它们?
var dirinfo = new DirectoryInfo(Path_Tb_Path.Text);
var entries = dirinfo.GetFileSystemInfos("**", SearchOption.AllDirectories);
在 .NET 4.0 中,您可以使用该EnumerateFileSystemInfos
方法。例如,您可以编写以下递归方法,该方法将吞下UnauthorizedAccessException
某些文件,并且仅将那些文件包含在您有权访问的结果中:
public static IEnumerable<FileSystemInfo> SafeGetFileSystemInfosRecursive(DirectoryInfo directory, string searchPattern)
{
try
{
return directory
.EnumerateFileSystemInfos(searchPattern)
.Concat(
directory
.EnumerateDirectories()
.SelectMany(x => SafeGetFileSystemInfosRecursive(x, searchPattern))
);
}
catch (UnauthorizedAccessException)
{
return Enumerable.Empty<FileSystemInfo>();
}
}
然后像这样调用方法:
var dirInfo = new DirectoryInfo(Path_Tb_Path.Text);
FileSystemInfo[] entries = SafeGetFileSystemInfosRecursive(dirInfo, "**").ToArray();