首頁 > 後端開發 > Golang > 在 Go 中寫入同一個 `os.File` 後讀取時如何避免 `io.EOF`?

在 Go 中寫入同一個 `os.File` 後讀取時如何避免 `io.EOF`?

Patricia Arquette
發布: 2024-12-14 08:53:14
原創
259 人瀏覽過

How to Avoid `io.EOF` When Reading After Writing to the Same `os.File` in Go?

在Go 中讀取和寫入同一個*os.File

理解問題

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板