6

我想知道什么是扫描包含您不确定的字符的目录的好方法。

比如我想扫描

C:\Program\Version2.*\Files

意义

  • 该文件夹位于C:\Program
  • Version2.*可以是Version2.33,Version2.1
  • 该文件夹中有一个名为的文件Files

我知道我可以做类似的事情foreach (directory) if contains("Version2."),但我想知道是否有更好的方法。

4

2 回答 2

7

Directory.EnumerateDirectories接受搜索模式。因此,枚举具有通配符的父级,而不是枚举其余的:

  var directories = 
    Directory.EnumerateDirectories(@"C:\Program\", "Version2.*")
     .SelectMany(parent => Directory.EnumerateDirectories(parent,"Files"))

注意:如果路径可以包含任何级别的通配符 - 只需规范化路径并用“\”分割,而不是逐级收集文件夹。

于 2012-12-11T07:35:47.670 回答
1

试试这个

var pattern = new Regex(@"C:\\Program\\Version 2(.*)\\Files(.*)");

var directories = Directory.EnumerateDirectories(@"C:\Program", "*", 
                                                 SearchOption.AllDirectories)
                                                .Where(d => pattern.IsMatch(d));
于 2012-12-11T07:39:00.727 回答