Feedback

C# - Dateien auf Stichworte scannen

Veröffentlicht von am 12/6/2013
(1 Bewertungen)
Diese Funktion erstellt eine Liste der Vorhandenen Daten in dem angegebenen Verzeichnis und sucht in den gefundenen Daten nach den von ihnen angegebenen Stichworten. Die Stichworte werden von einem , ohne Leerzeichen getrennt.
public void Scan(string PathToSearch, string Stichworte)
{
List<string> IList = Stichworte.Split(',').ToList();
List<string> FilesInDirectory = Directory.GetFiles(PathToSearch, "*.*",System.IO.SearchOption.AllDirectories).ToList();
for(int i = 0;i != FilesInDirectory.Count;++i)
{
try
{
StreamReader reader = new StreamReader(FilesInDirectory[i]);
string TextInFile = reader.ReadToEnd();
reader.Close();
for(int q = 0;q != IList.Count;++q)
{
if(TextInFile.Contains(IList[q]))
{
// Stichwort gefunden, ihr Code

// Stichwort gefunden, ihr Code 
}
}
}
catch
{}
}
}
Abgelegt unter Suche, Scan, Streamreader.

5 Kommentare zum Snippet

Koopakiller schrieb am 12/6/2013:
1. Lasse die Stichworte als Array übergeben, denn so kann man auch nach Kommas suchen. Das params-Schlüsselwort ist hierfür ebenfalls praktisch.
2. Um de gesamten Text einer Datei einzulesen solltest du File.ReadAllText() oder einen using-Block für den Stream benutzen.
So wird der Stream auch im Fehlerfall wieder geschlossen.
3. Ein Abfangen von Exceptions ohne deren weitere Verarbeitung erschwert oftmals nur die Arbeit, wenn es darum geht einen Fehler zu finden. Löse darum eine neue Exception aus und übergebe die abgefangene als innere Ausnahme.
sita schrieb am 12/7/2013:
Und noch als Idee: Vielleicht als weitere Parameter ein IncludeSubFolders und ein Mask. Als Rückgabewert eine Liste mit Treffern, statt innerhalb der Methode weiter zu arbeiten wäre auch praktischer.
Coder schrieb am 12/9/2013:
Vielleicht könnt ihr mir ja helfen wie rufe ich eine Windows Form in einem neuen Threed auf bei mir gibt das immer eine Fehler Nachricht.
Koopakiller schrieb am 12/9/2013:
@Coder
wenn es nur darum geht eine 2. Form parallel zur ersten anzuzeigen, dann kannst du einfach .Show() statt .ShowDialog() aufrufen. Dadurch kannst du beide Forms weiter benutzen.
Aber auch das direkte aufrufen aus einem 2. Thread heraus sollte funktionieren:
Thread t = new Thread(() =>{
Form1 frm = new Form1();
frm.ShowDialog();
});
t.Start();
Coder schrieb am 1/24/2014:
Vielen Dank
 

Logge dich ein, um hier zu kommentieren!