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