問題
使用這個方法實現會發現,最後一行的數據沒有了。因而更改一下方案。微信
這個方案是根據教程擼的,可是出現了問題,先知道下面的解決方案。這個問題在後邊探討。如今沒有實際的應用環境,也摸不到問題的點出如今哪學習
其實在學習的過程當中,咱們沒有必要糾結一個點,咔咔的經驗是,除非當日工做須要是不會對一個難點進行死磕的。慢慢的根據本身的知識提高會有更好的方案取而代之,或者問題的解決思路spa
func main() { file, e := os.OpenFile("D:/kaka.txt", os.O_RDONLY, 0666) if e != nil { fmt.Println("文件打開失敗:err", e) return } else { fmt.Println("文件打開成功") } // 打開時馬上掛起關閉程序 defer func() { file.Close() fmt.Println("文件關閉成功") }() // 建立文件的讀取器 reader := bufio.NewReader(file) // 死循環讀取 for { // 以換行符爲界,分批次讀取數據,獲得readString readString, e := reader.ReadString('\n') //line, _, e := reader.ReadLine() if e != nil { fmt.Println("文件讀取失敗;err", e) // 若是已到文件末尾,則直接結束 if e == io.EOF { time.Sleep(time.Second) break } } fmt.Print(readString) //fmt.Println(string(line)) } fmt.Println("讀取結束") }
更改
直接調用接口實現
code
另外一種解決方案
/** 關於文件讀取少了一行的另外一種解決方案 */ func main() { file, e := os.Open("d:/kaka.txt") if e != nil { fmt.Println("文件打開失敗") } else { fmt.Println("文件打開成功") // 建立文件讀取器 reader := bufio.NewScanner(file) for reader.Scan() { fmt.Println(reader.Text()) } } }