Maison  >  Article  >  développement back-end  >  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
Susan Sarandonoriginal
2024-11-17 07:30:03951parcourir

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)
    }
}

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!

Déclaration:
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