C# - Szöveg keresése TEXT állományokban

forráskód letöltése
Készítünk egy programot, amely segítségével egy megadott szöveget kereshetünk meg TEXT típusú állományokban. Meg kell adnunk a keresendő szöveget, a vizsgálandó állományok kiterjesztését, valamint egy könyvtárat, amelyben keresni szeretnénk. A komponens végignézi a megadott könyvtárban és annak alkönyvtáraiban található állományokat. Ha egy állományban megtalálja a keresett szövegrészt, akkor feljegyzi az állomány nevét és a találatok számát.
A program magja egy rekurzív függvény, a ScanDir. A függvény csak akkor működik rekurzívan, ha a checkBox1.Checked értéke igaz.
private void ScanDir(string dir)
A paraméterben kapott könyvtár alkönyvtárait a Directory osztály GetDirectories függvényével kérdezhetjük le. Eredményül egy sztring tömböt kapunk.
string[] directories = Directory.GetDirectories(dir);
Ha a checkBox1.Checked igaz és vannak további alkönyvtárak, akkor rekurzió következik.
for (int i = 0; i < directories.Length; i++)
  ScanDir(directories[i]);
A könyvtár állományait a GetFiles függvénnyel kérdezhetjük le.
string[] files = Directory.GetFiles(dir);
Csak azokkal az állományokkal foglalkozunk, amelyek kiterjesztése megfelelő. Ezt az alábbi módon ellenőrizhetjük le.
if (Path.GetExtension(files[i]) == textBox2.Text)
Ha a kiterjesztés megfelelő, akkor az állomány tartalmát beolvassuk egy sztring változóba.
Stream st = File.Open(files[i], FileMode.Open);
StreamReader sr = new StreamReader(st);
string s = sr.ReadToEnd();
st.Close();
A beolvasott sztringen végigmegyünk, karakterenként. Mindig beolvasunk annyi számú karakter, amekkora a textBox3.Text.Length értéke. Ha a két sztring egyezik, akkor feljegyezzük az állomány nevét. Egy állomány nevét csak egyszer írjuk a listába.
A sztringek összehasonlításánál ügyelnünk kell arra, hogy a kis- és nagybetűk különbségeit áthidaljuk.
if (textBox3.Text.ToLower() == sub.ToLower())