如何在使用迭代搜索目录时跳过目录?(C#)

如何在使用迭代搜索目录时跳过目录?(C#),c#,C#,我正在尝试编写一个插入查询,其中的数据来自文本文件。但是文本文件在一个文件夹中。让我展示一下层次结构 主文件夹->多个文件夹->多个文件夹->文本文件还有一个名为ORJ的文件夹 包含文本文件的每个文件夹都有另一个名为ORJ的文件夹。我不想处理orj。只有文本文件夹和它旁边的pdf。我怎么做?我发现了一个代码,我正在尝试修改它。顺便说一下,这是C# void ProcessFiles(string path) { Stack<string> stack; string

我正在尝试编写一个插入查询,其中的数据来自文本文件。但是文本文件在一个文件夹中。让我展示一下层次结构

主文件夹->多个文件夹->多个文件夹->文本文件还有一个名为ORJ的文件夹

包含文本文件的每个文件夹都有另一个名为ORJ的文件夹。我不想处理orj。只有文本文件夹和它旁边的pdf。我怎么做?我发现了一个代码,我正在尝试修改它。顺便说一下,这是C#

 void ProcessFiles(string path)
{
    Stack<string> stack;
    string[] files;
    string[] directories;
    string dir;

    stack = new Stack();
    stack.Push(path);

    while (stack.Count > 0) {

        // Pop a directory
        dir = stack.Pop();

        files = Directory.GetFiles(dir);
        foreach(string file in files)
        {
            // Process each file
        }

        directories = Directory.GetDirectories(dir);
        foreach(string directory in directories)
        {
            // Push each directory into stack
            stack.Push(directory);
        }
    }
}
void进程文件(字符串路径)
{
堆叠;
字符串[]文件;
字符串[]目录;
字符串目录;
堆栈=新堆栈();
stack.Push(路径);
而(stack.Count>0){
//弹出目录
dir=stack.Pop();
files=Directory.GetFiles(dir);
foreach(文件中的字符串文件)
{
//处理每个文件
}
目录=Directory.GetDirectories(dir);
foreach(目录中的字符串目录)
{
//将每个目录推入堆栈
stack.Push(目录);
}
}
}

在代码中的某个地方,您必须检查目录名,然后不要将其添加到堆栈中

例如:

    directories = Directory.GetDirectories(dir);
    foreach(string directory in directories)
    {
        if(directory != "ORJ")             // Push each directory except orj into stack
           stack.Push(directory);
    }

是否需要使用堆栈执行此操作

你可以在树上递归

void ProcessFolder(string path) {

    // Process the files 
    foreach(var file in Directory.GetFiles(path)) {  
        // Process each file  
    }  

    // process the sub folders
   foreach (var subFolder in Directory.GetDirectories(path).Where(fld => System.IO.Path.GetFilename(fld) != "ORJ")) {
        ProcessFolder(subFolder);
    }

}
嗯,,
艾伦。

看看关键词
continue
这是一种多么奇怪的递归方式。顺便说一句,我试过了。它不起作用。目录等于c://sth/sth/sth/Orj如果没有任何帮助,我将解析它并编写if@Gece,
directory.EndsWith(“Orj”)
?然后参考有关如何获取文件名的文档(提示)。已经解析了它,不知道为什么我甚至在没有调试的情况下问它:)我现在就试试EndsWith。谢谢