函数原型
func (f *File) Read(b []byte) (n int, err error) {
// 传入b 一段内存Buff
// 检测file是否为空,为空则返回
if err := f.checkValid("read"); err != nil {
return 0, err
}
// 将内容读到buff中,每次返回读了多少个byte和是否有错误
n, e := f.read(b)
return n, f.wrapErr("read", e)
}
示例
package main
import (
"fmt"
"io"
"log"
"os"
)
func main() {
file, err := os.Open("./main.go")
if err != nil {
log.Fatalln("open file failed")
}
defer file.Close()
buffer := make([]byte, 16)
for {
// 每次读取到buffer中,返回n个byte
n, err := file.Read(buffer)
if err == io.EOF {
os.Exit(0)
}
if err != nil {
log.Println("read byte failed")
os.Exit(127)
}
// 因为重复使用buffer,所以每次只打印buffer中的开始字节到读取到的n个字节
fmt.Print(string(buffer[:n]))
}
}