gin 响应 | 青训营笔记

94 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

IO包的基础使用

Reader interface

type Reader interface {
  Read(p []byte) (n int, err error)
}

将len(p)个字节读取到p中

Weiter interface

type Writer interface {
  Write(p []byte) (n int, err error)
}

用于将p中的数据写入到对象的数据流中

Seeek interface

type Seeker interface {
  Seek(offset int64, whence int) (int64, error)
}

offset是指针移动的偏移量

whence表示指针移动的方式

0 从数据的头部开始移动指针

1 从数据的当前指针位置开始移动指针

2 从数据的尾部移动指针

seek设置下一次读写操作的指针位置,每次的读写操作都是从指针位置开始的

Close interface

type Closer interface {
  Close() error
}

文件操作

文件打开模块

O_RDONLY int = syscall.O_RDONLY // 只读
O_WRONLY int = syscall.O_WRONLY // 只写
O_RDWR   int = syscall.O_RDWR   // 读写
O_APPEND int = syscall.O_APPEND // 追加
O_CREATE int = syscall.O_CREAT  // 如果不存在就创建
O_EXCL   int = syscall.O_EXCL   // 文件必须不存在
O_SYNC   int = syscall.O_SYNC   // 同步io
O_TRUNC  int = syscall.O_TRUNC  // **打开时清空文件**

读取文件

os.Open(name string) (file *File, err error)
ioutil.ReadFile(name string) ([]byte, error)
os.ReadFile(name string) ([]byte, error)
os.OpenFile(name string, flag int, perm FileMode) (*File, error)

一次性读

func main() {
  bs, err := os.ReadFile("./abc.txt")
  if err != nil {
    fmt.Printf("Read file error: %v\n", err)
    return
  }
  fmt.Printf("%s\n", bs)
}