我正在尝试在指定文件夹的子目录中找到一个文件(让我们称之为MyFolder)并将子目录保存到字符串变量中以便在别处使用.问题是,该指定文件夹中可能有多个子目录,每个子目录可能包含自己的子目录.MyFolder下的树中只有一个所述子目录具有我正在寻找的文件.
在下面的示例中,它可以是(可能更多,但对于此示例)两个位置中的任一个,但从不两者.
-Root
--/MyFolder
---/a
-----/aa
-------------/blah.txt (or if not here, it may be...)
---/b
-------/blah.txt (...right here, possibly)
Run Code Online (Sandbox Code Playgroud)
blah.txt当然,我正试图找到它.
我已经做了一个递归foreach循环,如下所示,但如果在第一级子目录中找到该文件,它将只返回子目录(/a, or /b).如果文件在/aa or /bb或更深(root/a/aa/aaa,例如),则每次都返回NULL.我花了几个小时试图通过慢慢地通过调试器并密切观察本地窗口来解决这个问题,但我似乎无法弄清楚出了什么问题.它确实找到了文件并在第二个foreach循环中存储了正确的子目录路径,但是由于某种原因,它开始向后循环(显示之前的目录,直到它到达return "Null";).如果在第一级子目录中找到该文件,则不会发生这种情况,只有当它在第二级或更深层次中找到时才会发生.
class Program
{
static string dir = @"C:\MyFolder\";
static void Main(string[] args)
{
Console.WriteLine(GetDirectory(dir));
Console.ReadKey();
}
static string GetDirectory(string dir)
{
foreach (string dName in Directory.GetDirectories(dir))
{
foreach (string fName in Directory.GetFiles(dName, "blah.txt"))
{
return dName;
}
GetDirectory(dName);
}
return "NULL"; …Run Code Online (Sandbox Code Playgroud)