f, err := os.Open("./src/day1/file_read/1.txt")
if err != nil{
fmt.Println(err)
os.Exit(2)
}
defer f.Close()
bufReader := bufio.NewReader(f)
//var buf [256]byte
var i = 0
for{
i++
fmt.Println(i)
line,err := bufReader.ReadBytes('\n')
fmt.Println(string(line))
if err == io.EOF {
fmt.Println("read the file finished")
break
}
if err != nil{
fmt.Println(err)
os.Exit(2)
}
}
f, err := os.Open("./src/day1/file_read/1.txt")
if err != nil{
fmt.Println(err)
os.Exit(2)
}
defer f.Close()
bufReader := bufio.NewReader(f)
var buf [256]byte
var i = 0
for{
i++
fmt.Println(i)
n,err := bufReader.Read(buf[:])
if err == io.EOF {
fmt.Println("read the file finished")
break
}
if err != nil{
fmt.Println(err)
os.Exit(2)
}
fmt.Println(string(buf[:n]))
}
bufReader.ReadBytes('\n')和 bufReader.ReadString('\n')在读到文件最后一行时,会同时返回内容line和io.EOF。而bufReader.Read()读取到末尾时,会先返回内容,然后再下一次迭代时才返回io.EOF