我使用以下代码通过目录递归地搜索文件,该目录将所有 xml 文件的列表返回给我。除了根目录中的 xml 文件不包含在列表中之外,其他都可以正常工作。
我理解为什么,因为它做的第一件事是获取根目录中的目录,然后获取文件,从而错过了根目录中的 GetFiles ()调用。我尝试在 foreach 之前包含 GetFiles ()调用,但结果并不如我预期的那样。
public static ArrayList DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, "*.xml"))
{
string extension = Path.GetExtension(f);
if (extension != null && (extension.Equals(".xml")))
{
fileList.Add(f);
}
}
DirSearch(d);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return fileList;
}
我的目录结构是这样的:
RootDirectory
test1.0.xml
test1.1.xml
test1.2.xml
2ndLevDir
test2.0.xml
test2.1.xml
3rdLevDir
test3.0.xml
test3.1.xml
代码返回:
test2.0.xml
test2.1.xml
test3.0.xml
test3.1.xml
我想返回每个文件,包括:
test1.0.xml
test1.1.xml
test1.2.xml
对递归不太熟悉,如能提供一些建议,我将不胜感激。