【问题标题】:get only first level sub directories C#仅获取第一级子目录 C#
【发布时间】:2017-04-08 19:15:34
【问题描述】:

我有如下文件夹结构

主文件夹的路径是

C:\Users\me\Desktop\main_folder\

可以有任意数量的任意名称的子文件夹。

我需要做的是进入每个子文件夹并提取其中的 zip 文件。

为此,在 powerhsell 中,我们可以使用如下路径,该路径采用给定文件夹中的任何子文件夹。

C:\Users\me\Desktop\main_folder\*\*.zip

但是如何在 C# 中做到这一点?

我尝试使用的方法是

System.IO.Directory.GetFiles("C:\Users\me\Desktop\main_folder\*\",
      "*.zip",System.IO.SearchOption.TopDirectoryOnly);

【问题讨论】:

  • 看看:stackoverflow.com/questions/13953724/…。 Directory.GetDirectories(RootDirectory) .SelectMany(d=>Directory.GetFiles(d));是你需要的。
  • 你能把 SearchOption 改成 AllDirectories 吗?
  • 我已经改过一次

标签: c# powershell directory


【解决方案1】:

试试这个:

    string root = @"C:\Users\me\Desktop\main_folder\";

    var files = 
        Directory.EnumerateDirectories(root).SelectMany(
            directory => Directory.EnumerateFiles(directory, "*.zip"));

【讨论】:

    【解决方案2】:

    您可以使用 LINQ:

    string mainFolder = @"C:\Users\me\Desktop\main_folder";
    List<string> zipPaths = new List<string>();
    
    string[] subDirectories = Directory.GetDirectories(mainFolder);
    subDirectories.ToList().ForEach((path) =>
    {
        // you can either process your zips here...
        // (in this case you don't have to add the paths to the zipPaths list)
        zipPaths.AddRange(Directory.GetFiles(path, "*.zip"));
    });
    
    // or you can process your zipPaths list here...
    

    ZIP 文件的所有路径都将在 zipPaths 列表中。

    【讨论】:

      猜你喜欢
      • 2017-01-18
      • 2021-07-05
      • 2019-09-13
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多