在Go 中,使用os 將資料寫入文件時.File,寫入後文件指標移至文件末尾。隨後,當嘗試從相同檔案指標讀取資料時,會立即遇到 io.EOF(檔案結束)錯誤,因為檔案指標仍然位於檔案末端。
要在寫入後成功從同一文件指針讀取數據,必須使用 Seek 方法將文件指針重置到文件開頭。以下是修改範例程式碼的方法:
// Seek to the beginning of the file before reading _, err := f.Seek(0, 0) if err != nil { fmt.Println("Error", err) } // Read 10 times r := bufio.NewReader(f) for i := 0; i < 10; i++ { str, _, err := r.ReadLine() if err != nil { if err == io.EOF { fmt.Println("Done") return } fmt.Println("Error", err) } fmt.Println("Read", string(str)) }
透過添加Seek方法,在讀取之前將檔案指標重置到檔案的開頭,允許後續的讀取操作檢索寫入的數據,而不會導致io.EOF 錯誤。
以上是在 Go 中寫入同一個 `os.File` 後讀取時如何避免 `io.EOF`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!