Heim > Backend-Entwicklung > Golang > Wie lese ich Daten, die gerade in Go in eine temporäre Datei geschrieben wurden?

Wie lese ich Daten, die gerade in Go in eine temporäre Datei geschrieben wurden?

Susan Sarandon
Freigeben: 2024-11-17 07:30:03
Original
1013 Leute haben es durchsucht

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

Lesen von Daten, die gerade in eine temporäre Datei geschrieben wurden

In Go kann es schwierig sein, Daten zu lesen, die gerade in eine temporäre Datei geschrieben wurden. Während die Daten möglicherweise erfolgreich geschrieben werden, können Versuche, sie sofort zu lesen, fehlschlagen. Dies liegt daran, dass der Schreibvorgang den Dateizeiger an das Ende der Datei verschiebt.

Um dieses Problem zu beheben, ist es notwendig, den Dateizeiger zurück zum Anfang zu suchen, bevor versucht wird, die Daten zu lesen. Dadurch kann der Lesevorgang ab dem ersten Byte der Datei beginnen.

Beispielimplementierung:

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)
    }
}
Nach dem Login kopieren

In diesem überarbeiteten Beispiel nach dem Schreiben von Daten in die temporäre Datei Datei wird der Dateizeiger vor dem Leseversuch mit tmpFile.Seek(0, 0) auf den Anfang zurückgesetzt. Dadurch wird sichergestellt, dass der Scanner die Daten wie vorgesehen vom Anfang der Datei liest.

Das obige ist der detaillierte Inhalt vonWie lese ich Daten, die gerade in Go in eine temporäre Datei geschrieben wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage