C#获取特定子目录

C#获取特定子目录,c#,C#,我有一个获取子目录的代码。我正在获取F:drive中的所有文件夹。我不需要全部6个,我不需要的两个是应用程序包和管理。我需要在代码中修改什么 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace File_2 { class Program {

我有一个获取子目录的代码。我正在获取F:drive中的所有文件夹。我不需要全部6个,我不需要的两个是应用程序包和管理。我需要在代码中修改什么

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace File_2
{
    class Program
    {
        static void Main(string[] args)
        {
            getSubDirectoryList(@"F:\Apps\");
            Console.WriteLine("Press Enter to Continue:");
            Console.Read();
        }

        static void getSubDirectoryList(string workingDirectory)
        {
            string[] directories = Directory.GetDirectories(workingDirectory);

            foreach (string directory in directories)
            {
                Console.WriteLine(directory);
            }
        }
    }
}
我从目录中获得的当前打印输出如下:

F:\Apps\management

F:\Apps\Knowledge

F:\Apps\Project

F:\Apps\Software

F:\Apps\Administration


F:\Apps\AppPacks

如果您正在查找子目录列表,最好使用递归深入嵌套。递归有它的局限性。。。。文件系统太大,很快就会遇到堆栈溢出

string[] directories = Directory.GetDirectories("c:\\")
                                .Where(c => !(c.EndsWith("\\AppPacks") ||
                                              c.EndsWith("\\Manage")))
                                .ToArray();
我有一个自己的nuGet包(在nuGet manager中查找NullVoidCreations.WpfHelpers),它有一个目录遍历器。这将允许您遍历一个目录并完成您的工作,因为它不依赖于递归。这是代码文件的链接。如果它太复杂,我可以向你解释如何使用它,只要在这里给我留言就行了


至于忽略目录,只需使用字符串比较技术忽略您不需要的内容。

AppPacks和Managing are folder也一样?是的,可能重复它们是Folders它们不是重复的。它们只是我不想被列入的文件夹抱歉,这似乎不起作用。当我运行控制台时,它仍然显示这两个文件夹application@Crazytraveller请你把它们放在原贴上好吗。“谢谢。”疯狂旅行者修好了。我只是在不带这些条目的情况下重新保存目录。我忘了过滤掉整个字符串。我需要访问F:驱动器而不是C:驱动器。当我将其编辑为F:驱动器时,C:驱动器仍然显示为正在更改.GetDirectory(“C:\\”)和.GetDirectory(“@”F:\Apps\”)?您很好:)
    static void getSubDirectoryList(string workingDirectory)
    {
        string[] directories = Directory.GetDirectories(workingDirectory);

        foreach (string directory in directories)
        {
            string[] filter = {@"F:\Apps\AppPacks", @"F:\Apps\Managing"};
            if(directory.Contains(filter[0]) || directory.Contains(filter[1]))
            { 
                directories = directories.Where(x => x != filter[0]).ToArray();
                directories = directories.Where(x => x != filter[1]).ToArray();
            }
            Console.WriteLine(directory);
        }
    }