Maison > développement back-end > Golang > Comment éviter « io.EOF » lors de la lecture après avoir écrit dans le même « os.File » dans Go ?

Comment éviter « io.EOF » lors de la lecture après avoir écrit dans le même « os.File » dans Go ?

Patricia Arquette
Libérer: 2024-12-14 08:53:14
original
256 Les gens l'ont consulté

How to Avoid `io.EOF` When Reading After Writing to the Same `os.File` in Go?

Lecture et écriture dans le même fichier *os.File dans Go

Comprendre le problème

Dans Go, lors de l'écriture de données dans un fichier à l'aide d'OS .Fichier, le pointeur de fichier est déplacé à la fin du fichier après l'écriture. Par la suite, lorsque vous tentez de lire des données à partir du même pointeur de fichier, une erreur immédiate io.EOF (End of File) est rencontrée car le pointeur de fichier est toujours à la fin du fichier.

Résolution

Pour réussir à lire les données du même pointeur de fichier après l'écriture, vous devez réinitialiser le pointeur de fichier au début du fichier à l'aide de la méthode Seek. Voici comment modifier l'exemple de code :

// Seek to the beginning of the file before reading
_, err := f.Seek(0, 0)
if err != nil {
    fmt.Println("Error", err)
}

// 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

En ajoutant la méthode Seek, le pointeur de fichier est réinitialisé au début du fichier avant la lecture, permettant aux opérations de lecture ultérieures de récupérer les données écrites sans provoquer une erreur io.EOF.

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