Heim > Backend-Entwicklung > Golang > Wie lese ich den Inhalt einer Textdatei in Go?

Wie lese ich den Inhalt einer Textdatei in Go?

Barbara Streisand
Freigeben: 2024-11-13 15:13:02
Original
493 Leute haben es durchsucht

How to Read the Contents of a Text File in Go?

So lesen Sie eine 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)
}
Nach dem Login kopieren

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:

Dateiinhalt in den Speicher einlesen

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)
}
Nach dem Login kopieren

Lesen in Blöcken

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
        }
    }
}
Nach dem Login kopieren

Verwendung eines Scanners

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())
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage