У меня есть следующий код для рекурсивного поиска файлов через каталог, который возвращает мне список всех xml файлов. Все работает хорошо, за исключением того, что xml файлы в корневом каталоге не включены в список.
Я понимаю, почему, поскольку первое, что он делает, это получить каталоги в корне, а затем получить файлы, тем самым пропуская вызов GetFiles() в корне. Я попытался включить вызов GetFiles() до начала foreach, но результаты не так, как я ожидаю.
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
Не очень хороший стих с рекурсией. Любые указатели будут очень благодарны.