前言
Go语言中,为了方便开发者使用,将IO操作封装在了如下几个包中:
- io为IO原语(I/O primitives)提供基本的接口
- io/ioutil封装一些实用的I/O函数
- fmt实现格式化I/O
- bufio实现带缓冲I/O
ioutil包封装了一些I/O实用程序函数。
函数 | 说明 |
---|---|
ReadAll | 读取数据,返回读到的字节slice |
ReadDir | 读取一个目录,返回目录入口数组[]os.FileInfo |
ReadFile | 都一个文件,返回读到的文件内容字节slice |
WriteFile | 根据文件路径,写入字节slice |
TempDir | 在一个目录中创建指定前缀名的临时目录,返回新临时目录的路径 |
TempFile | 在一个目录中创建指定前缀名的临时文件,返回os.File |
NopCloser | 用一个无操作的Close方法包装文件并返回一个ReadCloser接口。 |
1 NopCloser
func NopCloser(r io.Reader) io.ReadCloser
用一个无操作的Close方法包装r返回一个ReadCloser接口。
实例演示:
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
f, err := os.Open("a.txt")
if err != nil {
fmt.Printf("err: %v\n", err)
}
readCloser := ioutil.NopCloser(f)
fmt.Printf("readCloser: %v\n", readCloser)
}
运行结果:
[Running] go run "c:\Users\Mechrevo\Desktop\go_pro\test.go"
readCloser: {
0xc000006028}
[Done] exited with code=0 in 0.99 seconds
2 ReadAll
func ReadAll(r io.Reader) ([]byte, error)
从r读取数据直到EOF或遇到error,返回读取的数据和可能的错误。成功的调用返回的err为nil而非EOF。因为本函数定义为读取r直到EOF,它不会将读取返回的EOF视为应报告的错误。
实例演示:
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
f, _ := os.Open("a.txt") // File实现了Reader