首页 > 编程笔记 > Go语言笔记 阅读:10

Go语言ioutil库执行I/O操作(附带实例)

ioutil 库是一个工具包,包含很多执行 IO 操作的实用函数。注意,这些函数都是用于一次性读取和写入的。当使用这些函数时,要格外注意文件的大小。

ioutil 库中用于执行 IO 操作的函数如下表所示:

表:ioutil 库中用于执行 IO 操作的函数及其说明
函数名称 说明
ReadAll 读取数据,返回读取的字节切片
ReadDir 读取一个目录,返回目录下的文件和子目录
ReadFile 读取一个文件,返回文件内容
WriteFile 根据文件路径,写入字节切片
TempDir 在一个目录中创建指定前缀名的临时目录
TempFile 在一个目录中创建指定前缀名的临时文件

【实例】使用 ioutil 库中的函数执行IO操作。如下图所示,在项目目录下,含有 1 个子目录、1 个 Go 文件和 3 个文本文件。


图 1 当前项目目录的结构

其中,在文本文件 test03.txt 中,已经写入了数据,即“hello world”。下面编写一个程序,完成以下 3 个操作:
代码如下:
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

相关文章