这是我参与「第五届青训营 」伴学笔记创作活动的第 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)
}