可以一次性读取,也可以按行读取,也可以按字节读取,一般小文件直接一次性读取,当文件内容太大,内存不足,建议逐行读取处理。
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
func main() {
//1、一次性读取文件内容,还有一个 ReadAll的函数,也能读取
data, err := ioutil.ReadFile("./util/file.go")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(data))
//2、逐行读取
file, err := os.Open("./util/file.go") //打开
if err != nil { fmt.Println(err); return }
defer file.Close() //关闭
line := bufio.NewReader(file)
for {
content, _, err := line.ReadLine()
if err == io.EOF { break }
fmt.Println(string(content))
}
//3、按照字节数读取
file,err= os.Open("./util/file.go")
if err!=nil{ fmt.Println(err); return }
defer file.Close()
//读取数据
bs := make([] byte,4)
for {
_, err = file.Read(bs)
if err == io.EOF { break}
fmt.Print(string(bs))
}
}