使用 dir.GetDirectories 时排除具有特定模式的目录

Excluding a directory with specific pattern while using dir.GetDirectories

我想在使用 GetDirectories 方法时排除文件夹名称“.svn”

DirectoryInfo[] dirs = dir.GetDirectories();

我在某处读到 GetDirectories 的 searchPattern 参数只能支持?和 * 通配符,不支持任何其他正则表达式。

我想使用 DirectoryInfo[] 目录填充除“.svn”文件夹之外的所有文件夹(例如)。这可能吗?如果没有,我还有哪些其他选择?

您可以在 GetDirectories 方法之后使用 linq 方法。

using System.Linq;
...
...
dir.GetDirectories().Where(d => !d.Name.StartsWith(".")).ToList(); //does not starts with dot.
dir.GetDirectories().Where(d => d.Name != ".svn").ToList(); //does not equal .svn

是的,MSDN 说 (https://msdn.microsoft.com/en-au/library/f3e2f6e5(v=vs.110).aspx) 搜索模式不支持正则表达式。但是您可以在客户端通过正则表达式过滤结果。例如:

var di = new DirectoryInfo("c:\");
var dirInfos = di.GetDirectories();
var filtered = from r in dirInfos where !Regex.IsMatch(r.FullName,"$*.svn") select r;

回答: DirectoryInfo[] dirs = dir.GetDirectories().Where(x => x.Name != ".svn").ToArray(); (并且它需要 System.Linq; 命名空间)

假设以下内容仍然适用:
https://meta.stackexchange.com/questions/1555/mark-a-comment-as-answer-to-a-question