package main
import (
"fmt"
"os"
"io"
)
func main(){
fileName := "src/day10/file/test.txt"
file,err := os.Open(fileName)
defer file.Close()
if err != nil{
fmt.Println("Open the file failed,err:",err)
}
var arr [256]byte
var buf []byte
var i int = 0
for{
i++
fmt.Println(i)
n,err := file.Read(arr[:])
if err == io.EOF{
fmt.Println("file read finished")
break
}
if err != nil {
fmt.Println("file read failed")
os.Exit(-1)
}
buf = append(buf,arr[:n]...)
fmt.Println(string(buf))
}
fmt.Println(string(buf))
}
打印结果如下:
···
1
hello world
copy test
open file
2
file read finished
hello world
copy test
open file
···
通过结果可以查看到os包中*File的read方法在可以一次性读取完所有内容,如果读取完第一次并不会返回io.EOF,但是第二次读取的时候会返回这个err。