问题
使用这个方法实现会发现,最后一行的数据没有了。于是更改一下方案。
这个方案是根据教程撸的,但是出现了问题,先知道下面的解决方案。这个问题在后边探讨。现在没有实际的应用环境,也摸不到问题的点出现在哪
其实在学习的过程中,我们没有必要纠结一个点,咔咔的经验是,除非当日工作需要是不会对一个难点进行死磕的。慢慢的根据自己的知识提升会有更好的方案取而代之,或者问题的解决思路
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("读取结束")
}
更改
直接调用接口实现
另一种解决方案
/**
关于文件读取少了一行的另一种解决方案
*/
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())
}
}
}