C#获取特定子目录
我有一个获取子目录的代码。我正在获取F:drive中的所有文件夹。我不需要全部6个,我不需要的两个是应用程序包和管理。我需要在代码中修改什么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 {
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);
}
}