问题
使用这个方法实现会发现,最后一行的数据没有了。因而更改一下方案。微信
这个方案是根据教程撸的,可是出现了问题,先知道下面的解决方案。这个问题在后边探讨。如今没有实际的应用环境,也摸不到问题的点出如今哪学习
其实在学习的过程当中,咱们没有必要纠结一个点,咔咔的经验是,除非当日工做须要是不会对一个难点进行死磕的。慢慢的根据本身的知识提高会有更好的方案取而代之,或者问题的解决思路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()) } } }