Go语言ioutil库执行I/O操作(附带实例)
ioutil 库是一个工具包,包含很多执行 IO 操作的实用函数。注意,这些函数都是用于一次性读取和写入的。当使用这些函数时,要格外注意文件的大小。
ioutil 库中用于执行 IO 操作的函数如下表所示:
【实例】使用 ioutil 库中的函数执行IO操作。如下图所示,在项目目录下,含有 1 个子目录、1 个 Go 文件和 3 个文本文件。

图 1 当前项目目录的结构
其中,在文本文件 test03.txt 中,已经写入了数据,即“hello world”。下面编写一个程序,完成以下 3 个操作:
代码如下:
ioutil 库中用于执行 IO 操作的函数如下表所示:
函数名称 | 说明 |
---|---|
ReadAll | 读取数据,返回读取的字节切片 |
ReadDir | 读取一个目录,返回目录下的文件和子目录 |
ReadFile | 读取一个文件,返回文件内容 |
WriteFile | 根据文件路径,写入字节切片 |
TempDir | 在一个目录中创建指定前缀名的临时目录 |
TempFile | 在一个目录中创建指定前缀名的临时文件 |
【实例】使用 ioutil 库中的函数执行IO操作。如下图所示,在项目目录下,含有 1 个子目录、1 个 Go 文件和 3 个文本文件。

图 1 当前项目目录的结构
其中,在文本文件 test03.txt 中,已经写入了数据,即“hello world”。下面编写一个程序,完成以下 3 个操作:
- 使用 ReadAll() 函数读取 test03.txt 中的数据;
- 使用 ReadDir() 函数获取项目目录下的文件和子目录名;
- 使用 ReadFile() 函数读取 test03.txt。
代码如下:
package main import ( "fmt" "io/ioutil" "os" ) //读取test03.txt中的数据 func testReadAll(){ f, _ := os.Open("test03.txt") //File 实现了 Reader defer f.Close() b, err := ioutil.ReadAll(f) if err != nil { fmt.Printf("err: %v\n", err) } fmt.Printf("string(b): %v\n", string(b)) } //获取当前项目目录下的文件和子目录名 func testReadDir(){ f, _ := ioutil.ReadDir(".") for _, v := range f { fmt.Printf("v.Name(): %v\n", v.Name()) } } //读取 test03.txt func testReadFile(){ b, _ := ioutil.ReadFile("test03.txt") fmt.Printf("string(b): %v\n", string(b)) } func main(){ testReadAll() testReadDir() testReadFile() }运行程序后,运行结果如下:
string(b): hello world
v.Name(): demo_2.go
v.Name(): test01.txt
v.Name(): test02.txt
v.Name(): test03.txt
v.Name(): 子目录01
string(b): hello world