Maison > développement back-end > Golang > Comment lire le contenu d'un fichier texte dans Go ?

Comment lire le contenu d'un fichier texte dans Go ?

Barbara Streisand
Libérer: 2024-11-13 15:13:02
original
493 Les gens l'ont consulté

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

Comment lire un fichier texte dans Go

Lorsque vous travaillez avec des fichiers texte dans Go, il est essentiel de comprendre comment lire leur contenu. Cependant, la question que vous avez posée : "Comment lire un fichier texte ? [dupliquer]", suggère que cette tâche peut être plus complexe qu'il n'y paraît.

Le code que vous avez fourni :

package main

import (
    "fmt"
    "os"
    "log"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Print(file)
}
Copier après la connexion

lit avec succès le fichier, mais le résultat est simplement la valeur du pointeur du descripteur de fichier (*os.File). Pour réellement obtenir le contenu du fichier, vous devez utiliser l'une des techniques suivantes :

Lecture du contenu du fichier en mémoire

Pour les petits fichiers, l'approche la plus simple consiste à utiliser io/ioutil.ReadAll pour charger l'intégralité du fichier en mémoire.

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)
}
Copier après la connexion

Lecture par morceaux

Pour les fichiers plus volumineux, la lecture par morceaux peut être plus efficace en termes de mémoire.

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
        }
    }
}
Copier après la connexion

Utilisation d'un scanner

Enfin, vous pouvez utiliser le package bufio pour créer un scanner qui lit le fichier en jetons, en avançant en fonction d'un séparateur (par défaut, une nouvelle ligne).

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())
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal