在Go 中寫入資料後從臨時檔案讀取資料
在Go 中,使用ioutil.TempFile 建立臨時檔案允許寫入入文件。然而,隨後從檔案中讀取資料可能會遇到挑戰,因為寫入時檔案指標會移至檔案末端。
為了解決這個問題,解決方案是將檔案指標重設為檔案開頭寫入後,啟用資料讀取。這可以使用 *os.File 類型的 Seek 方法來實現。此外,建議使用 defer 關閉文件,以確保資源的正確釋放。
以下是一個示範正確實現的範例:
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() 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) } }
透過合併這些修改,程式寫入臨時檔案後可以可靠地從臨時檔案讀取資料。
以上是Go中寫入暫存檔案後如何讀取資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!