【问题标题】:GetDirectories returns me a string c#GetDirectories 返回一个字符串 c#
【发布时间】:2016-09-21 22:21:49
【问题描述】:

您好,我目前正在获取以下目录:

dirs = Directory
  .GetDirectories(@"C:\Users\jphillips\Desktop\test", "*", SearchOption.AllDirectories)
  .Where(Path => reg.IsMatch(Path))
  .ToList();

有了这个,我可以过滤目录中的所有子目录,并使用下面提供的正则表达式过滤我想要的子目录:

Regex reg = new Regex(@"\d+(\.\d+)+");

我的问题在于我的新目录路径字符串列表。我想在它们上使用 directoryinfo 函数,例如 Parent 并获取这些目录的目录。有没有办法将我的字符串路径转换为directyinfo 类型。谢谢!

【问题讨论】:

    标签: c# directory subdirectory getdirectories


    【解决方案1】:

    好吧,既然 Directory.GetDirectories 返回一个字符串数组,你可以做的是在你的 LINQ 语句中添加一个 select

     dirs = Directory.GetDirectories(@"C:\Users\jphillips\Desktop\test", "*",
            SearchOption.AllDirectories).Where(Path => reg.IsMatch(Path)).Select(x => new
            DirectoryInfo(x)).ToList();
    

    【讨论】:

    • 没有理由这样做,因为 DirectoryInfo 已经构建了这个功能。
    【解决方案2】:

    您可以为根路径创建一个DirectoryInfo,并使用它而不是路径:

    var rootDir = new DirectoryInfo(@"C:\Users\jphillips\Desktop\test");
    dirs = rootDir.GetDirectories("*", SearchOption.AllDirectories)
                  .Where(d => reg.IsMatch(d.FullName))
                  .ToList();
    

    【讨论】:

      【解决方案3】:

      您可以只使用 DirectoryInfo 类来执行此操作,并将 DirectoryInfo.Name 属性提供给您的正则表达式,而不是整个 DirectoryInfo 实例。

      DirectoryInfo di = new DirectoryInfo(@"C:\Temp");
      DirectoryInfo[] subDirectories = di.GetDirectories().Where(d => reg.IsMatch(d.Name));
      

      【讨论】:

        猜你喜欢
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        • 2014-12-11
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 2014-12-18
        • 2018-04-20
        相关资源
        最近更新 更多