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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 02:53:03589parcourir

How to Read Data Written to a Temp File in Go?

Lecture de données écrites dans un fichier temporaire dans Go

Dans Go, la création et la lecture à partir d'un fichier temporaire peuvent présenter des défis. Considérez le code de test simplifié suivant :

package main

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)
    }
    fmt.Println("Created temp file:", tmpFile.Name())
    defer tmpFile.Close()

    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")
    s := bufio.NewScanner(tmpFile)
    for s.Scan() {
        fmt.Println(s.Text())
    }
    err = s.Err()
    if err != nil {
        log.Fatal("error reading temp file", err)
    }
}

Pendant que le code crée et écrit correctement dans le fichier temporaire, la tentative de lecture donne une sortie vide. En effet, l'opération d'écriture déplace le pointeur vers la fin du fichier. Pour lire les données, nous devons revenir au début.

Solution :

Pour résoudre ce problème, ajoutez tmpFile.Seek(0, 0) pour déplacer le pointeur revient au début du fichier avant de tenter de lire :

    tmpFile.Seek(0, 0)
    s := bufio.NewScanner(tmpFile)
    for s.Scan() {
        fmt.Println(s.Text())
    }

Avec cette modification, le code lit et imprime correctement les données. N'oubliez pas de fermer le fichier en utilisant defer tmpFile.Close() avant de quitter pour garantir une bonne gestion des ressources.

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