【问题标题】:Is it possible to specify directory wildcards in Directory.GetFiles?是否可以在 Directory.GetFiles 中指定目录通配符?
【发布时间】:2012-10-08 10:16:23
【问题描述】:

我有一个要筛选的目录结构,我需要能够指定顶级文件夹,一个典型的例子是:

c:\folder1\1\targetfolder
c:\folder1\2\targetfolder
c:\folder1\3\targetfolder
c:\folder1\4\targetfolder

我想获取名为targetfolder的文件夹中的每个文件,指定这个似乎失败了:

Directory.GetFiles("c:\folder1\*\targetfolder");

有没有快速简便的方法来实现这一点?

【问题讨论】:

  • 试试 **,这是他们在 MSBuild 中使用的。
  • 已经尝试过**,同样的异常...

标签: .net file directory


【解决方案1】:

试过这个并且有效,但如果你的根路径中有文件或文件夹具有相同的模式,你可能会得到误报

var files = Directory.GetFiles("c:\\folder1", "*.*", 
        SearchOption.AllDirectories).Where(n => n.Contains("\\targetfolder\\"));

【讨论】:

    【解决方案2】:

    如果您有名为 targetfolder 或类似名称的文件,这对我有用并且没有副作用。

    Directory.GetDirectories(
        @"c:\folder1\",
        @"targetfolder",
        SearchOption.AllDirectories)
        .SelectMany(dir => Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly))
    

    这将为您提供仅存在于文件夹 targetfolder 中的文件夹 c:\folder1\ 中的文件

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2011-01-02
      • 2021-09-17
      相关资源
      最近更新 更多