Skip to content

5.3、Golang标准库-ioutil

函数名作用
ReadAll读取数据,返回读到的字节slice
ReadDir读取一个目录,返回目录入口数组 []os.FileInfo
ReadFile读取文件,返回文件内容(字节slice)
WriteFile根据文件路径,写入字节slice
TempDir在一个目录中创建指定前缀名的临时目录,返回新临时目录的路径
TempFile在一个目录中创建指定前缀名的临时文件,返回os.File

示例

go
package main

import (
    "fmt"
    "io/ioutil"
    "strings"
)

func main() {
    r := strings.NewReader("Hello world")
    b, err := ioutil.ReadAll(r)

    if err != nil {
        fmt.Printf("err: %v\n", err)
    } else {
        fmt.Printf("string(b): %v\n", string(b))
        // string(b): Hello world
    }
}

从文件中读取

go
package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    f, _ := os.Open("demo.txt")
    defer f.Close()

    b, err := ioutil.ReadAll(f)

    if err != nil {
        fmt.Printf("err: %v\n", err)
    } else {
        fmt.Printf("string(b): %v\n", string(b))
        // string(b): Hello world
    }
}

读取当前目录下所有文件

go
package main

import (
    "fmt"
    "io/ioutil"
)

func main() {

    fi, _ := ioutil.ReadDir(".")

    for _, v := range fi {
        fmt.Printf("v.Name(): %v\n", v.Name())
    }

}

读取文件

go
package main

import (
    "fmt"
    "io/ioutil"
)

func main() {

    b, _ := ioutil.ReadFile("demo.txt")

    fmt.Printf("string(b): %v\n", string(b))

}

写入文件内容

go
package main

import (
    "io/ioutil"
)

func main() {

    ioutil.WriteFile("demo.txt", []byte("hello"), 0644)

}

临时文件

go
package main

import (
    "io/ioutil"
    "log"
    "os"
)

func main() {

    // 创建临时文件
    tempfile, err := ioutil.TempFile("", "temp")

    if err != nil {
        log.Fatal(err)
    }

    // 函数结束移除临时文件
    defer os.Remove(tempfile.Name()) // clean up

    // 向临时文件写入字节数组
    content := []byte("hello world")

    if _, err := tempfile.Write(content); err != nil {
        log.Fatal(err)
    }

    if err := tempfile.Close(); err != nil {
        log.Fatal(err)
    }

}