Feedback

Textdatei einlesen auf verschiedene Arten

Sprache: C#

Hier sind vier Möglichkeiten zu sehen wie man eine Textdatei komplett einlesen kann… Kein großes Ding, aber vlt. brauch es ja doch noch mal einer… 😉
// 1. Variante

// StreamReader erstellen mit Pfad der Datei und dem Encoding des OS
using (StreamReader sr = new StreamReader(@"D:Test.txt", Encoding.Default))
{
    // liest von der aktuellen Position im StreamReader bis zum Ende der Datei ein
    this.txtContent.Text = sr.ReadToEnd();
}



// 2. Variante

// StreamReader erstellen mit Pfad der Datei und dem Encoding des OS
using (StreamReader sr = new StreamReader(@"D:Test.txt", Encoding.Default))
{
    StringBuilder content = new StringBuilder();
    
    // schreibt Zeile für Zeile auf den StringBuilder bis das Ende der Datei erreicht ist
    while (!sr.EndOfStream)
        content.AppendLine(sr.ReadLine());

    // StringBuilder als String an die TextBox übergeben
    this.txtContent.Text = content.ToString();
}



3. Variante

this.txtContent.Text = File.ReadAllText(@"D:Test.txt", Encoding.Default);



// auf Anmerkung von Christopher Kk -> File.ReadAllLines(@"D:Test.txt")
4. Variante

StringBuilder sb = new StringBuilder();
foreach (string s in File.ReadAllLines(@"D:Test.txt", Encoding.Default))
    sb.AppendLine(s);

this.txtContent.Text = sb.ToString();
// 1. Variante

// StreamReader erstellen mit Pfad der Datei und dem Encoding des OS
using (StreamReader sr = new StreamReader(@"D:Test.txt", Encoding.Default))
{
    // liest von der aktuellen Position im StreamReader bis zum Ende der Datei ein
    this.txtContent.Text = sr.ReadToEnd();
}



// 2. Variante

// StreamReader erstellen mit Pfad der Datei und dem Encoding des OS
using (StreamReader sr = new StreamReader(@"D:Test.txt", Encoding.Default))
{
    StringBuilder content = new StringBuilder();
    
    // schreibt Zeile für Zeile auf den StringBuilder bis das Ende der Datei erreicht ist
    while (!sr.EndOfStream)
        content.AppendLine(sr.ReadLine());

    // StringBuilder als String an die TextBox übergeben
    this.txtContent.Text = content.ToString();
}



3. Variante

this.txtContent.Text = File.ReadAllText(@"D:Test.txt", Encoding.Default);



// auf Anmerkung von Christopher Kk -> File.ReadAllLines(@"D:Test.txt")
4. Variante

StringBuilder sb = new StringBuilder();
foreach (string s in File.ReadAllLines(@"D:Test.txt", Encoding.Default))
    sb.AppendLine(s);

this.txtContent.Text = sb.ToString();

2 Kommentare

  1. Ich hab alle Varianten ausprobiert, bei meiner 250 MB großen Datei kommt immer eine OutOfMemoryException. Wie macht man das mit sehr großen Dateien?

  2. @Christopher Wolf
    Nette Sammlung, vollständigkeitshalber würde ich aber auch die beiden Überschriften „3. Variante“ und „4. Variante“ auskommentieren (nur zur Optik und falls jemand das ganze Snippet einfügt ;-))

    @Beate Kern
    Schon mal mit der RichTextBox eigenen Methode .LoadFile probiert?