获取C#中仅一级子目录

5

我有以下文件夹结构

enter image description here

主文件夹的路径为

C:\Users\me\Desktop\main_folder\

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

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

为此,在PowerShell中,我们可以使用以下路径,它会获取给定文件夹中的任何子文件夹。

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

但如何在C#中实现呢?

我正在尝试使用的方法是

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

1
看这里:https://dev59.com/U2zXa4cB1Zd3GeqPR0Y9 。Directory.GetDirectories(RootDirectory) .SelectMany(d=>Directory.GetFiles(d)); 就是你需要的。 - Leo Chapiro
1
你能把SearchOption改成AllDirectories吗? - mbrdev
我已经改过一次了。 - Sandaru
2个回答

8

试试这个:

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

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

1
你可以使用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列表中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接