C#获取特定的子目录

时间:2018-07-11 10:12:40

标签: c#

我有一个获取子目录的代码。我正在F:驱动器中获取所有文件夹。我不需要全部6个,我不需要的两个是AppPacks和Managing。我需要在代码中进行哪些更改?

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 \ Managing

F:\ Apps \ Knowledge

F:\ Apps \ Project

F:\ Apps \ Software

F:\ Apps \ Administration

F:\ Apps \ AppPacks

3 个答案:

答案 0 :(得分:1)

string[] directories = Directory.GetDirectories("c:\\")
                                .Where(c => !(c.EndsWith("\\AppPacks") ||
                                              c.EndsWith("\\Manage")))
                                .ToArray();

答案 1 :(得分:1)

    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);
        }
    }

答案 2 :(得分:0)

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

我有一个自己的nuGet软件包(在nuGet管理器中查找NullVoidCreations.WpfHelpers),其中包含一个目录遍历器。这将允许您遍历目录并执行您的工作,因为它不依赖于递归。这是代码文件https://github.com/waliarubal/WpfHelpers/blob/master/WpfHelpers/DirectoryWalker.cs的链接。如果它太复杂,我可以向您解释如何使用它,在这里给我留言。

就忽略目录而言,只需使用字符串比较技术即可忽略不需要的内容。