Mam następujący kod do rekurencyjnego wyszukiwania plików za pośrednictwem katalogu, który zwraca listę wszystkich plików xml do mnie. Wszystko działa dobrze, z tym wyjątkiem, że pliki xml w katalogu głównym nie znajdują się na liście.Wyszukiwanie pliku w katalogach rekursywnie
Rozumiem, dlaczego, ponieważ pierwszą rzeczą, którą robi, jest pobranie katalogów w katalogu głównym, a następnie pobranie plików, przez co brakuje wywołania GetFiles() w katalogu głównym. Próbowałem, włączając wywołanie GetFiles() przed foreach, ale wyniki nie są takie, jak się spodziewam.
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;
}
Moja struktura katalogów jest coś takiego:
RootDirectory
test1.0.xml
test1.1.xml
test1.2.xml
2ndLevDir
test2.0.xml
test2.1.xml
3rdLevDir
test3.0.xml
test3.1.xml
powraca Kod:
test2.0.xml
test2.1.xml
test3.0.xml
test3.1.xml
Chciałbym powrócić każdy plik w tym:
test1.0.xml
test1.1.xml
test1.2.xml
Niezbyt dobrze werset z rekursami na. Wszelkie wskazówki byłyby bardzo mile widziane.
'Directory.EnumerateFiles (SDIR "* xml" SearchOption.AllDirectories)' –