golang IO

IO包

io.Reader

type Reader interface {
    Read(p []byte) (n int, err error)
}
  • 任何实现了Read方法的类型都实现了io.Reader接口
  • 可以从Reader接口中读取数据到p中
  • 当成功读取n > 0 字节后,如果遇到错误或者文件结尾会返回错误
    • 所以当n > 0时,应该先处理读到的数据,这些数据是有效的
// 文件拷贝
func CopyFile(dstName, srcName string) (written int64, err error) {
	src, err := os.Open(srcName)
	if err != nil {
		return
	}
	defer src.Close()

	dst, err := os.Create(dstName)
	if err != nil {
		return
	}
	defer dst.Close()

	return io.Copy(dst, src)
}

io.Writer

type Writer interface {
    Write(p []byte) (n int, err error)
}
  • 任何实现了Write方法的类型都实现了io.Writer接口
  • 可以向Writer接口中写入数据p
  • os.Stdout, os.Stderr等都实现了io.Writer接口

OS包

// 只读打开文件
os.Open(name string) (*File, error)
// 打开文件
os.OpenFile(name string, flag int, perm FileMode) (*File, error)
  • flag可取值
    • os.O_RDONLY:只读
    • os.O_WRONLY:只写
    • os.O_CREATE:创建:如果指定文件不存在,就创建该文件。
    • os.O_TRUNC:截断:如果指定文件已存在,就将该文件的长度截为0
  • perm一般取0666

bufio包

  • 带缓冲的IO
bufio.NewReader(r io.Reader) *Reader
bufio.NewWriter(w io.Writer) *Writer

ioutil包

发布了161 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/winter_wu_1998/article/details/102751961
Io
IO: