golang讀取文件,golang讀取文件最後一行

本文目錄一覽:

Golang中讀取文件最常見的錯誤

使用文件名作為輸入

另一個常見錯誤是將文件名傳遞給函數。

假設我們必須實現一個函數來計算文件中的空行數。最自然的實現是這樣的:

filename 作為輸入給出,所以我們打開它然後我們實現我們的邏輯,對吧?

現在,假設我們希望在此函數之上實現 單元測試 ,以使用普通文件,空文件,具有不同編碼類型的文件等進行測試。很容易變得非常難以管理。

此外,如果我們想要實現相同的邏輯但是對於HTTP主體,例如,我們將不得不為此創建另一個函數。

Go有兩個很棒的抽象: io.Reader 和 io.Writer 。相反,通過一個文件名,我們可以簡單地傳遞一個 io.Reader 作為 抽象 的數據源。

它是文件嗎?一個HTTP正文?字節緩衝區?這並不重要,因為我們仍然會使用相同的 Read 方法。

在我們的例子中,我們甚至可以緩衝輸入以逐行讀取它。所以,我們可以使用 bufio.Reader 它的 ReadLine 方法:

現在,打開文件本身的責任委託給 count 客戶:

使用第二種實現,無論 實際數據源 如何,都可以調用該函數。同時,它將 促進 我們的單元測試,因為我們可以簡單地創建一個 bufio.Reader 來自 string :

翻譯自:

golang文件操作-讀操作的常見方式匯總

ioutil的方式能夠讀取整個文件,只需傳入文件名,操作簡單。該操作方式需要把文件讀入內容,效率高,同樣佔用內存也高

該操作同樣可看作按行讀取,將數據讀入緩衝區

另外一種方式為ReadBytes,與readString的區別為返回格式為切片類型

golang (*bufio.Reader)的讀取方法

bufReader.ReadBytes(‘\n’)和 bufReader.ReadString(‘\n’)在讀到文件最後一行時,會同時返回內容line和io.EOF。而bufReader.Read()讀取到末尾時,會先返回內容,然後再下一次迭代時才返回io.EOF

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/232291.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:49
下一篇 2024-12-11 12:49

相關推薦

發表回復

登錄後才能評論