// Datei zeilenweise auslesen package main import ( "bufio" "fmt" "io" "log" "os" ) func main() { var datei string datei = "/tmp/go-test.txt" // Datei öffnen f, err := os.Open(datei) // kontrollieren, ob beim öffnen der Datei alles gut gegangen ist if err != nil { log.Fatal(err) } // Dateiinhalt aus der Datei in einen Puffer lesen bf := bufio.NewReader(f) // Endlosschleife starten // die geht Zeile für Zeile durch die Datei for { // den Puffer zeilenweise auslesen line, isPrefix, err := bf.ReadLine() // kontrollieren, ob das Dateiende erreicht wurde if err == io.EOF { break } // kontrollieren, ob beim lesen aus dem Puffer alles gut gegangen ist if err != nil { log.Fatal(err) } // nach weiteren Fehler sehen; // Bufio ist normalerweise 4K groß, ist eine Zeile größer als 4K // gibt es hier eine Fehlermeldung; // sollte es einen Fehler geben obwohl die Zeile kleiner als 4K ist, // dann kann die Datei kaputt sein oder es wir die falsche Datei // gelesen if isPrefix { log.Fatal("Error: Unexpected long line reading", f.Name()) } // Fertig // aber beachte, dass die Daten hier als Byte-Stück (byte slice) // und nicht als "string" vorliegen... // Bist Du damit zufrieden, dann kannst Du das hier einsetzen. fmt.Println(string(line)) } }