golang: os.Read函数

函数原型

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]))
	}
}
posted @ 2023-01-16 22:40  ishmaelwanglin  阅读(161)  评论(0编辑  收藏  举报