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單獨返回