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
Libérer: 2024-11-17 02:53:03
original
588 Les gens l'ont consulté

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)
    }
}
Copier après la connexion

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())
    }
Copier après la connexion

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!

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