仅在字符串[]中存储文件名的一部分时,获取文件的完整路径

时间:2019-04-02 07:28:30

标签: c#

我已经将要移动到另一个文件夹的文件的ID存储在“字符串[]”中。

所有文件都有不同的前缀,并且有数百个文件。

All Files has different Prefix

我要做的是获取包含“ ID”的文件的完整路径,以便能够将其移动到另一个文件夹中。

出什么问题了?

仅包含一部分名称文件,我无法获得文件的完整路径。 任何帮助,将不胜感激。

{"form_typ":"R1","status_cd":"ER","action":"SAVE","error_report":{"error_msg":"File could not be uploaded! Download the latest version of Offline tool to generate the JSON file or ensure to validate your uploaded file against the template published at Specification Portal.","error_cd":"RET191106"}}

1 个答案:

答案 0 :(得分:0)

我们可以在 Linq 的帮助下扫描文件并与Ids进行匹配:

  // HashSet<string> is faster for Contains then string[]: O(1) vs. O(N)
  HashSet<string> Ids = new HashSet<string>() {
    "011911772",
    "123456789",
  };

  string[] dirsToScan = new string[] {
    @"c:\Utilisateurs",
    @"d:\MyFiles",
    @"c:\SomeOtherDir\SomeFolder",
  };

  var regex = new Regex("[0-9]+$"); 

  //TODO: check search options (and restrict if possible)
  var files = dirsToScan
    .SelectMany(dir => Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories))
    .Where(file => {
      var match = regex.Match(Path.GetFileNameWithoutExtension(file));

      return match.Success && Ids.Contains(match.Value);
    })
    .ToArray(); // Let's materialize as an array