2016-12-28 57 views
3

我是Golang的新手,從一些示例開始。目前,我正在嘗試的是逐行讀取文件,並在滿足特定條件的情況下將其替換爲另一個字符串。 該文件是用於測試目的包含四條線:用Golang替換文件中的一行

one 
two 
three 
four 

在該文件上工作的代碼如下所示:

​​

正如你可以在代碼片段看,我想更換字符串「two」和「This is a test」,只要從該文件讀取該字符串。 爲了得到文件內的當前位置,我使用Go的尋求方法。 但是,什麼情況是,總是在最後一行得到由替代這是一個測試,使得看起來像這樣的文件:

one 
two 
three 
This is a test 

檢查打印語句的輸出,將當前文件位置到終端,我得到這樣的輸出後的第一線已經閱讀

2016/12/28 21:10:31 Try to read ... 
2016/12/28 21:10:31 Position in file is: 19 

所以先讀取後,位置光標已經指向我的文件的結尾,這解釋了爲什麼新的字符串得到appende d到最後。有人知道這裏發生了什麼,或者是什麼導致了這種行爲?

回答

3

讀者不是file.Seek的控制器。您已將讀者聲明爲:reader := bufio.NewReader(file),然後您每次只讀一行bytes, _, _ := reader.ReadLine(),但file.Seek不會更改讀者正在閱讀的位置。

建議您閱讀文檔中的ReadSeeker並切換到使用該文檔。還有一個使用SectionReader的例子。

+0

我會進入這個,thx @miltonb :) – pklndnst