Maison > développement back-end > Golang > Pourquoi la lecture après l'écriture dans le même pointeur de fichier Go ne renvoie-t-elle rien ?

Pourquoi la lecture après l'écriture dans le même pointeur de fichier Go ne renvoie-t-elle rien ?

Mary-Kate Olsen
Libérer: 2024-12-13 03:56:09
original
594 Les gens l'ont consulté

Why Does Reading After Writing to the Same Go File Pointer Return Nothing?

Lecture et écriture dans le même fichier dans Go

Dans Go, travailler avec des fichiers est simplifié grâce au type os.File. Cependant, un problème peut survenir lorsque vous essayez de lire et d’écrire sur le même pointeur de fichier. Cet article aborde un tel scénario et propose une solution.

Problème :

Vous essayez d'écrire des données dans un fichier, puis de les relire à partir du même fichier. aiguille. Cependant, l'opération de lecture ne renvoie rien.

Code :

func main() {
    filename := "test.txt"
    f, _ := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm)
    defer os.Remove(filename)

    // Write 10 times
    for i := 0; i < 10; i++ {
        fmt.Fprintf(f, "test%d\n", i)
    }

    // Read 10 times
    r := bufio.NewReader(f)
    for i := 0; i < 10; i++ {
        str, _, err := r.ReadLine()
        if err != nil {
            if err == io.EOF {
                fmt.Println("Done")
                return
            }
            fmt.Println("Error", err)
        }
        fmt.Println("Read", string(str))
    }
}
Copier après la connexion

Problème :

Dans le code fourni, le pointeur de fichier est déplacé à la fin du fichier après l'opération d'écriture. Lorsque l'opération de lecture est tentée, elle rencontre immédiatement la fin du fichier, ce qui entraîne une erreur io.EOF.

Solution :

Pour résoudre ce problème, vous doit rechercher manuellement le pointeur de fichier vers le début avant de le lire.

_, err := f.Seek(0, 0)
if err != nil {
    fmt.Println("Error", err)
}
Copier après la connexion

Cet extrait de code ajoute une opération de recherche avant la boucle de lecture. Il place le pointeur de fichier au début du fichier, permettant à l'opération de lecture ultérieure de récupérer les données écrites.

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