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

Susan Sarandon
Release: 2024-11-17 07:30:03
Original
958 people have browsed it

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

Reading Data Just Written to a Temporary File

In Go, it can be challenging to read data just written to a temporary file. While the data may be written successfully, attempts to read it immediately may fail. This is because the write operation moves the file pointer to the end of the file.

To resolve this issue, it's necessary to seek the file pointer back to the beginning before attempting to read the data. This allows the reading operation to start from the first byte of the file.

Example Implementation:

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)
    }
}
Copy after login

In this revised example, after writing data to the temporary file, the file pointer is reset to the beginning with tmpFile.Seek(0, 0) before attempting to read. This ensures that the scanner reads the data from the start of the file, as intended.

The above is the detailed content of How to Read Data Just Written to a Temporary File in Go?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template