大家好我目前得到的子目录我通过这个电话想:UnauthorizedAccessException与getDirectories
foreach (DirectoryInfo dir in parent)
{
try
{
subDirectories = dir.GetDirectories().Where(d => d.Exists == true).ToArray();
}
catch(UnauthorizedAccessException e)
{
Console.WriteLine(e.Message);
}
foreach (DirectoryInfo subdir in subDirectories)
{
Console.WriteLine(subdir);
var temp = new List<DirectoryInfo>();
temp = subdir.GetDirectories("*", SearchOption.AllDirectories).Where(d => reg.IsMatch(d.Name)).Where((d => !d.FullName.EndsWith("TESTS"))).Where(d => !(d.GetDirectories().Length == 0 && d.GetFiles().Length == 0)).Where(d => d.GetFiles().Length > 3).ToList();
candidates.AddRange(temp);
}
}
foreach(DirectoryInfo dir in candidates)
{
Console.WriteLine(dir);
}
所以现在我的问题是,我的最终名单称为候选人我什么也没得到,因为即时得到一个访问的问题,由于的一个在try块的我的子目录文件夹中找到名为lost +的文件夹。我尝试使用try和catch来处理异常,所以我可以继续做我的检查我其实不关心这个文件夹,我试图忽略它,但我不知道如何去忽略它从我的get目录搜索任何想法?我已经尝试使用.where过滤器来忽略任何包含文件夹名称的文件夹,但是它没有工作,或者它只是停止了我的程序在文件夹名称。
这个问题已经回答,请参阅以下内容:[链接](http://stackoverflow.com/questions/172544/ignore-folders-files-when-目录获取文件被拒绝访问) –
这是为了获取文件,但我需要的目录不是文件 – JPhillips
你尝试过使用'Directory.EnumerateDirectories()'?它提供了更多的灵活性,并且允许您至少在找到目录时获取目录的名称。不幸的是,隐藏的系统目录像'lost + found'会导致'UnauthorizedAccessException'。请确保您使用默认的“SearchOption”,以便搜索不会自动进入任何子目录。 –