大家好,目前我使用以下方式获取子目录:
```python ```
请注意,以上代码示例中的目录路径应该替换为您自己的路径。
```python ```
请注意,以上代码示例中的目录路径应该替换为您自己的路径。
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);
}
现在我的问题是,由于子目录中的一个名为lost+found的文件夹导致我无法访问最终列表candidates,因此我什么也没有得到。我尝试使用try和catch来处理异常,以便我可以继续进行检查。其实我并不关心这个文件夹,而是想忽略它,但我不知道如何在get directories搜索中忽略它。你有什么想法吗?我已经尝试使用.where过滤器忽略包含该文件夹名称的任何文件夹,但这并没有起作用,它只是停止了我的程序在那个文件夹名称处。
Directory.EnumerateDirectories()
吗?它提供了更多的灵活性,允许你至少获取找到的目录名称。不幸的是,像lost+found
这样的隐藏系统目录会导致UnauthorizedAccessException
异常。确保使用默认的SearchOption
,这样搜索就不会自动进入任何子目录。 - Berin Loritsch