Maison > développement back-end > Golang > Comment lire des données récemment écrites dans un fichier temporaire dans Go ?

Comment lire des données récemment écrites dans un fichier temporaire dans Go ?

Susan Sarandon
Libérer: 2024-11-17 07:30:03
original
1009 Les gens l'ont consulté

How to Read Data Just Written to a Temporary File in Go?

Lecture de données venant d'être écrites dans un fichier temporaire

Dans Go, il peut être difficile de lire des données venant d'être écrites dans un fichier temporaire. Même si les données peuvent être écrites avec succès, les tentatives de lecture immédiate peuvent échouer. En effet, l'opération d'écriture déplace le pointeur de fichier vers la fin du fichier.

Pour résoudre ce problème, il est nécessaire de ramener le pointeur de fichier au début avant de tenter de lire les données. Cela permet à l'opération de lecture de démarrer à partir du premier octet du fichier.

Exemple de mise en œuvre :

import (
    "bufio"
    "fmt"
    "io/ioutil"
    "log"
    "os"
    "path/filepath"
)

func main() {
    tmpFile, err := ioutil.TempFile("", fmt.Sprintf("%s-", filepath.Base(os.Args[0])))
    if err != nil {
        log.Fatal("Could not create temporary file", err)
    }
    defer tmpFile.Close() // Close the file before exiting

    fmt.Println("Created temp file:", tmpFile.Name())

    fmt.Println("Writing some data to the temp file")
    if _, err = tmpFile.WriteString("test data"); err != nil {
        log.Fatal("Unable to write to temporary file", err)
    } else {
        fmt.Println("Data should have been written")
    }

    fmt.Println("Trying to read the temp file now")

    // Seek the pointer to the beginning
    tmpFile.Seek(0, 0)
    s := bufio.NewScanner(tmpFile)
    for s.Scan() {
        fmt.Println(s.Text())
    }
    if err = s.Err(); err != nil {
        log.Fatal("error reading temp file", err)
    }
}
Copier après la connexion

Dans cet exemple révisé, après avoir écrit des données dans le fichier temporaire fichier, le pointeur de fichier est réinitialisé au début avec tmpFile.Seek(0, 0) avant de tenter de lire. Cela garantit que le scanner lit les données depuis le début du fichier, comme prévu.

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