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
ICP备案:
公安联网备案: