Go语言读写文件相关函数对比

# 文件 IO

`io.Reader` 和 `io.Writer`。这两个是两个特别重要的 interface。一般来说凡是可以抽象为输入的 IO 操作都会使用 io.Reader。凡是可以抽象为输出的 IO 操作都会使用 io.Writer。

# io/ioutil

对于配置文件等等比较小的常规文件,一般来说我们可以使用 io/ioutil 包中的辅助函数操作就好了,比较快捷方便。

函数签名 | 说明
——– | ———
`func NopCloser(r io.Reader) io.ReadCloser` | 把 io.Reader 包装成一个 io.ReadWriter
`func ReadAll(r io.Reader) ([]byte, error)` | 读取所有字符,成功的话 err == nil
`func ReadDir(dirname string) ([]os.FileInfo, error) ` | 读取当前目录的所有文件
`func ReadFile(filename string) ([]byte, error)` | 读取文件的所有内容
`func TempDir(dir, prefix string) (name string, err error)` | 创建临时目录
`func TempFile(dir, prefix string) (f *os.File, err error)` | 创建临时文件
`func WriteFile(filename string, data []byte, perm os.FileMode) error` | 写入文件

对于比较大的文件,直接使用 `ioutil.ReadFile` 读到内存里显然是不现实的,这时候应该使用 `os` 模块中的函数。

## 文件操作

其他语言中一般统一通过 open(filename, rw) 这个函数来打开文件,而 golang 中有所
不同,一般来说是通过 os.Open(filename) 打开文件用于读取,使用 os.Create(filename)
打开文件用于写入。

About 逸飞

后端工程师

发表评论

电子邮件地址不会被公开。 必填项已用*标注