社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
package main
import (
"bufio"
"fmt"
"io"
"os"
)
// 带缓冲的读入
func main() {
file, err := os.Open("1.txt")
if err != nil {
fmt.Println("文件打开失败" + err.Error())
return
}
defer func() {
file.Close()
fmt.Println("文件关闭")
}()
// 创建带缓冲的读取器
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('n')
if err == nil {
fmt.Print(str)
} else if err == io.EOF{
// ReadString最后会同EOF和最后的数据一起返回
//fmt.Println(str)
break
} else {
fmt.Println("出错!!")
return
}
}
//bytes := make([]byte, 16)
//for {
// Read不会,单独返回EOF
// c, err := reader.Read(bytes)
// if err == nil {
// fmt.Print(string(bytes[:c]))
// } else if err == io.EOF{
// //fmt.Println(string(bytes[:]))
// break
// } else {
// fmt.Println("出错!!")
// return
// }
//}
fmt.Println("读取完毕")
}
1.txt内容
jadeshu
hello world!
skdjksjd
显示结果《最后一行数据没有显示》
ReadString()即返回err为EOF时还含有数据
Read()就不会有这种情况,EOF单独返回
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!