Bagaimana untuk Membaca Data yang Ditulis ke Fail Temp dalam Go?

Linda Hamilton
Lepaskan: 2024-11-17 02:53:03
asal
528 orang telah melayarinya

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

Membaca Data Ditulis pada Fail Temp dalam Go

Dalam Go, mencipta dan membaca daripada fail sementara boleh menimbulkan cabaran. Pertimbangkan kod ujian ringkas berikut:

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)
    }
}
Salin selepas log masuk

Semasa kod mencipta dan menulis dengan betul pada fail temp, cuba membaca hasil dalam output kosong. Ini kerana operasi tulis mengalihkan penunjuk ke hujung fail. Untuk membaca data, kita perlu mencari kembali ke permulaan.

Penyelesaian:

Untuk menyelesaikan isu ini, tambah tmpFile.Seek(0, 0) untuk memindahkan penuding kembali ke permulaan fail sebelum cuba membaca:

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

Dengan pengubahsuaian ini, kod membaca dan mencetak data dengan betul. Ingat untuk menutup fail menggunakan defer tmpFile.Close() sebelum keluar untuk memastikan pengurusan sumber yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Data yang Ditulis ke Fail Temp dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan