Feedback

C# - Dateien auf Stichworte scannen

Veröffentlicht von am 06.12.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.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

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 06.12.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 07.12.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 09.12.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 09.12.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 24.01.2014:
Vielen Dank
 

Logge dich ein, um hier zu kommentieren!