Heim > Artikel > Backend-Entwicklung > Wie lese ich den Inhalt einer Textdatei in Go?
Bei der Arbeit mit Textdateien in Go ist es wichtig zu verstehen, wie man deren Inhalt liest. Die von Ihnen gestellte Frage „Wie liest man eine Textdatei? [Duplikat]“ deutet jedoch darauf hin, dass diese Aufgabe möglicherweise komplexer ist, als es scheint.
Der von Ihnen bereitgestellte Code:
package main import ( "fmt" "os" "log" ) func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } fmt.Print(file) }
Liest die Datei erfolgreich, aber die Ausgabe ist lediglich der Zeigerwert des Dateideskriptors (*os.File). Um den Inhalt der Datei tatsächlich zu erhalten, müssen Sie eine von mehreren Techniken anwenden:
Bei kleinen Dateien besteht der einfachste Ansatz darin, zum Laden io/ioutil.ReadAll zu verwenden die gesamte Datei in den Speicher.
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() b, err := io.ReadAll(file) fmt.Print(b) }
Bei größeren Dateien kann das Lesen in Blöcken speichereffizienter sein.
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() buf := make([]byte, 32*1024) for { n, err := file.Read(buf) if n > 0 { fmt.Print(buf[:n]) } if err == io.EOF { break } if err != nil { log.Printf("read %d bytes: %v", n, err) break } } }
Schließlich können Sie das bufio-Paket verwenden, um einen Scanner zu erstellen, der die Datei in Token liest und dabei basierend auf einem Trennzeichen (standardmäßig eine neue Zeile) fortschreitet.
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) fmt.Println(scanner.Bytes()) } }
Das obige ist der detaillierte Inhalt vonWie lese ich den Inhalt einer Textdatei in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!