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) 打开文件用于写入。