我正在尝试搜索给定目录中的文件。 我必须从最里面的目录中找到该文件,如果没有找到,则递归遍历1步。
Ex:迭代1: 搜索文件:D:\ Folder1 \ Folder2 \ Folder3 \ Folder4
Ex:迭代2: 搜索文件:D:\ Folder1 \ Folder2 \ Folder3 \
Ex:迭代3: 搜索文件:D:\ Folder1 \ Folder2 \
我的代码:
private string findTheFile(string path)
{
string[] files = Directory.GetFiles(path, "filename.txt", SearchOption.TopDirectoryOnly);
if (files.Length == 1)
return files[0].ToString(); //File found, return the file's path.
else
findTheFile(Path.GetDirectoryName(path));// File not found, recursively search the parent folder.
return null; // Return null if file not found.
}
发生了什么: 代码在一定程度上起作用,意味着找到了文件位置。但是不是返回值,控件继续到else部分。
当我出错时请指导我。
提前致谢!!
答案 0 :(得分:0)
试试这个,你应该返回递归方法的结果:
private string findTheFile(string path)
{
string[] files = Directory.GetFiles(path, "filename.txt", SearchOption.TopDirectoryOnly);
if (files.Length == 1)
return files[0].ToString();
else
return findTheFile(Path.GetDirectoryName(path)); /* You should return your result here */
return null;
}
如果您未返回findTheFile
方法的结果,则会返回null
值。
答案 1 :(得分:0)
我不知道你的意思"继续其他部分"。但是如果您按照以下方式解决问题,您的代码应该可以运行:
private string findTheFile(string path)
{
if (string.IsNullOrEmpty(path))
{
return null;
}
string[] files = Directory.GetFiles(path, "filename.txt", SearchOption.TopDirectoryOnly);
if (files.Length == 1)
return files[0]; //File found, return the file's path.
return findTheFile(Path.GetDirectoryName(path)); // File not found, recursively search the parent folder.
}