Tüm xml dosyalarının bir listesini bana döndüren bir dizin aracılığıyla dosyaları tekrarlı olarak aramak için aşağıdaki kodu kullanıyorum. Tümü iyi çalışır, ancak kök dizindeki xml dosyaları listede yer almaz.Dizinler içinde tekrarlı olarak dosya aranıyor
Neden olduğunu anladım, ilk yapacağı şey, kök dizinlerini almak, sonra dosyaları almak, böylece GetFiles() çağrısı kökte eksik. GetFiles() çağrısını foreach'den önce eklemeyi denedim, ancak sonuçlar beklediğim gibi değil.
RootDirectory
test1.0.xml
test1.1.xml
test1.2.xml
2ndLevDir
test2.0.xml
test2.1.xml
3rdLevDir
test3.0.xml
test3.1.xml
Kod döner:
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;
}
Benim dizin yapısı gibi bir şey
test2.0.xml
test2.1.xml
test3.0.xml
test3.1.xml
ben dahil olmak üzere her dosyayı dönmek istiyorum
:
test1.0.xml
test1.1.xml
test1.2.xml
Pek iyi recursi ile ayet üzerinde. Herhangi bir işaretçi çok takdir edilecektir.
'Directory.EnumerateFiles (sdir, "* .xml'dir", SearchOption.AllDirectories) ' –