一:带缓冲的Reader读文件
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
//打开文件
file, err := os.Open("./test.txt")
if err != nil {
fmt.Println("open file err=", err)
}
//函数退出要关闭文件,否则内存泄漏
defer file.Close()
//返回一个 *reader 带缓冲 默认缓冲为4096字节
reader := bufio.NewReader(file)
//循环读取文件内容
for {
str, err := reader.ReadString('\n') //读到一个换行符就结束
if err == io.EOF {
break
}
fmt.Println(str)
}
fmt.Println("文件读取结束了")
}
二:一次性读文件
package main
import (
"fmt"
"io/ioutil"
)
func main() {
//使用ioutil.ReadFile一次性将文件读取到位
file := "./test.txt"
content,err := ioutil.ReadFile(file)
if err != nil {
fmt.Println("read file err=%v",err)
}
//把读取到的内容显示到终端
fmt.Printf("%v",string(content)) // []bye
//没有显示的open和close文件操作,文件的open和close被分装到了 ioutil.ReadFile()喊函数内部了
}