我有以下代码通过目录递归搜索文件,该目录向我返回了所有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
没有很好的诗歌与递归。任何指针将不胜感激。
Directory.EnumerateFiles(sDir, "*.xml", SearchOption.AllDirectories)