首頁 > 後端開發 > Golang > 為什麼寫入後讀取 Go *os.File 指標會導致意外的 EOF?

為什麼寫入後讀取 Go *os.File 指標會導致意外的 EOF?

Linda Hamilton
發布: 2024-12-23 14:05:17
原創
889 人瀏覽過

Why Does Reading from a Go *os.File Pointer After Writing Result in Unexpected EOF?

在Go 中使用相同的*os.File 指標寫入後讀取檔案

在Go 中,可以建立、寫入,並使用*os.File 指標讀取檔案。但是,在寫入資料後從相同文件指標讀取資料可能會導致意外行為。

問題:

考慮以下程式碼片段:

在此程式碼中,我們建立一個檔案並使用fmt.Fprintf 函數向 >

在此程式碼中,我們建立一個檔案並使用fmt.Fprintf 函數向其中寫入10 行。之後,我們嘗試使用 bufio.NewReader 從相同檔案指標讀取 10 行。但是,程式碼始終會列印“完成”,表示已到達文件末尾。

解決方案:

出現問題的原因是當資料寫入*os.File,檔案指標移動到檔案末端。因此,當我們嘗試讀取文件時,我們從文件末尾開始並立即遇到文件結束指示符。

要解決此問題,我們需要將檔案指標重設為在嘗試讀取檔案之前先查看檔案的開頭。這可以使用Seek函數來實現:

透過在寫入檔案後添加這一行,我們可以確保當我們開始讀取時檔案指標位於檔案的開頭,從而使我們能夠成功讀取寫入的資料。

以上是為什麼寫入後讀取 Go *os.File 指標會導致意外的 EOF?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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