Feedback

C# - Text in Textdateien suchen

Veröffentlicht von am 10.05.2011
(2 Bewertungen)
Dieser Code gibt eine ArrayList mit den Namen(inkl. Pfad) aller Textdateien im Suchverzeichnis und dessen Unterverzeichnisse zurück die den gesuchten String beinhalten.
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

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

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

public static List<string> SearchStringInTextFiles(string pfad, string search)
{
  List<string> matchFiles = new List<string>();
  if (search != "")
  {
    string pattern = search;
    string[] metaChars = new string[] { @"\", @"*", @"+", @"?", @".", @"(", @")", @"[", @"]", @"{", @"}", @"/", @"|", @"^", @"$" };
    foreach (string s in metaChars)
    {
      pattern = pattern.Replace(s, @"\" + s);
    }
    foreach (string fileName in Directory.GetFiles(pfad, "*.txt", SearchOption.AllDirectories))
    {
      string[] lines = File.ReadAllLines(fileName);
      if (lines.Length > 0)
      {
        if (System.Text.RegularExpressions.Regex.IsMatch(String.Join(Environment.NewLine, lines), pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
        {
          matchFiles.Add(fileName);
        }
      }
    }
  }
  return matchFiles;
}
Abgelegt unter Datei, durchsuchen.

3 Kommentare zum Snippet

Scavanger schrieb am 15.05.2011:
ArrayList ist veraltet, und gehört dringendst eingemottet, es gibt keinen Grund mehr die untypisierten Listen zu verwenden, verwende stattdessen eine generische Liste, in diesem Fall List<string>.
Andi Mahr schrieb am 19.05.2011:
@Scavanger
Du hast recht. Habs entsprechend geändert.
stuemi schrieb am 05.03.2018:
Habe den Code in mein Projekt eingebaut und alles klappt soweit einwandfrei.
Mir ist jedoch aufgefallen, dass wenn ich den gleichen Ordner unmittelbar danach noch einmal durchsuche, die Suche weitaus schneller durchläut. Warte ich etwas (z.B. 1. Stunde) und durchsuche dann noch einmal den Ordner, dauert es wieder länger. (ca. 12000 Textdateien bei 100 Zeilen pro Datei).
Wird da etwas im Hintergrund gespeichert, was weitere Suchen beschleunigt? Wenn ja, hat man irgendwie Einfluss darauf?
 

Logge dich ein, um hier zu kommentieren!