【问题标题】:Directory.GetFiles get multiple files using filePatternDirectory.GetFiles 使用 filePattern 获取多个文件
【发布时间】:2014-03-21 20:32:01
【问题描述】:

如何设置模式以返回多个文件,但仅限于我正在寻找的文件。

我有一个包含文件的目录:

marks v1.csv,
marks_east.csv
marks.csv
marks_west.csv
marks23.csv
marks24.csv

我需要 ma​​rks.csv、marks_east.csv、marks_west.csv 使用 filePattern

之前我使用确切的文件名,因为我只对一个文件感兴趣。现在我想通过修改filePattern来重用相同的进程。

var files = Directory.GetFiles(sourceDirectory, filePattern).OrderBy(d => new FileInfo(d).CreationTime);

【问题讨论】:

  • 没有文件名模式将返回值限制为您想要的值。你需要一些其他的方法来过滤它们。

标签: c# c#-4.0 c#-3.0


【解决方案1】:

Directory.GetFiles 支持通配符。

var files = Directory.GetFiles(sourceDirectory, "marks_*.csv").OrderBy(d => new FileInfo(d).CreationTime);

但这不会捕获marks.csv。正则表达式非常适合这种情况,但可惜 GetFiles 函数不支持正则表达式。一个快速(有点老套)的解决方案可能是:

var files = Directory.GetFiles(sourceDirectory, "marks_*.csv");
if (File.Exists(sourceDirectory+"marks.csv"))
    files.Insert(0, "marks.csv");
files.OrderBy(d => new FileInfo(d).CreationTime);

【讨论】:

  • 这也将返回marks23.csv、marks24.csv等。这是我不想要的。
  • 带有marks_*的那个不会返回我想要的marks.csv。
  • 再次编辑。我的道歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 2011-06-03
  • 2011-12-04
相关资源
最近更新 更多