在Go 中使用相同的*os.File 指標寫入後讀取檔案
在Go 中,可以建立、寫入,並使用*os.File 指標讀取檔案。但是,在寫入資料後從相同文件指標讀取資料可能會導致意外行為。
問題:
考慮以下程式碼片段:
在此程式碼中,我們建立一個檔案並使用fmt.Fprintf 函數向 >
在此程式碼中,我們建立一個檔案並使用fmt.Fprintf 函數向其中寫入10 行。之後,我們嘗試使用 bufio.NewReader 從相同檔案指標讀取 10 行。但是,程式碼始終會列印“完成”,表示已到達文件末尾。解決方案:
出現問題的原因是當資料寫入*os.File,檔案指標移動到檔案末端。因此,當我們嘗試讀取文件時,我們從文件末尾開始並立即遇到文件結束指示符。 要解決此問題,我們需要將檔案指標重設為在嘗試讀取檔案之前先查看檔案的開頭。這可以使用Seek函數來實現:透過在寫入檔案後添加這一行,我們可以確保當我們開始讀取時檔案指標位於檔案的開頭,從而使我們能夠成功讀取寫入的資料。以上是為什麼寫入後讀取 Go *os.File 指標會導致意外的 EOF?的詳細內容。更多資訊請關注PHP中文網其他相關文章!