我有一个获取子目录的代码。我正在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
答案 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的链接。如果它太复杂,我可以向您解释如何使用它,在这里给我留言。
就忽略目录而言,只需使用字符串比较技术即可忽略不需要的内容。