Go IO

ioutil包使用

这个包里面包含了操作文件,文件夹的相关函数

ReadAll函数

该函数读取r中的所有数据,不会把EOF当错误处理,读取成功err返回nil

func ReadAll(r io.Reader)([]byte,error)

例:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func checkErr(err error) {
    if err!=nil {
        panic(err)
    }
}

func main() {
    rsp,err:=http.Get("http://www.baidu.com")
    checkErr(err)
    result,err:=ioutil.ReadAll(rsp.Body)
    checkErr(err)
    fmt.Println(string(result))
}

结果:


image.png
ReadDir函数

该函数读取指定目录下的所有目录(不包括子目录)和文件

func ReadDir(dirname string) ([]os.FileInfo, error)

例:

package main

import (
    "fmt"
    "io/ioutil"
)

func checkErr(err error) {
    if err!=nil {
        panic(err)
    }
}

func main() {
    result,err:=ioutil.ReadDir("/")
    checkErr(err)
    for _,v:=range result {
        fmt.Println(v.Name())
    }
}

结果:


image.png
ReadFile函数

该函数读取文件中所有数据,加了读写锁的

func ReadFile(filename string) ([]byte, error)

例:

package main

import (
    "fmt"
    "io/ioutil"
    "path/filepath"
)

func checkErr(err error) {
    if err!=nil {
        panic(err)
    }
}

func main() {
    dir,err:=filepath.Abs(".")
    checkErr(err)
    result,err:=ioutil.ReadFile(dir+"/main/io.go")
    checkErr(err)
    fmt.Println(string(result))
}

结果:


image.png
WriteFile函数

该函数向文件写入数据,如果文件不存在则会以perm权限创建文件,写入前会清空文件,加了读写锁的

func WriteFile(filename string, data []byte, perm os.FileMode) error

例:

package main

import (
    "io/ioutil"
    "path/filepath"
)

func checkErr(err error) {
    if err!=nil {
        panic(err)
    }
}

func main() {
    dir,err:=filepath.Abs(".")
    checkErr(err)
    pwd:=dir+"/main/io.txt"
    result,err:=ioutil.ReadFile(dir+"/main/io.go")
    checkErr(err)
    err=ioutil.WriteFile(pwd,result,0644)
    checkErr(err)
}

结果:

image.png
TempDir函数

该函数用于存放编译过程的临时文件

func TempDir(dir, prefix string) (name string, err error)

例:

package main

import (
    "io/ioutil"
    "log"
    "path/filepath"
)

func main() {
    content := []byte("temporary file's test")
    dir, err := ioutil.TempDir(".", "example")
    if err != nil {
        log.Fatal(err)
    }
    //defer os.RemoveAll(dir) //用于程序清除临时文件

    tmpfn := filepath.Join(dir, "tmpfile")
    if err := ioutil.WriteFile(tmpfn, content, 0666); err != nil {
        log.Fatal(err)
    }
}

结果:在当前目录创建了文件夹并在里面加入了tmpfile在tmpfile中写入了数据


image.png
TempFile函数

该函数在dir 目录中创建一个以 prefix 为前缀的临时文件 **如果dir为空则以哦是.TempDir为临时目录创建临时文件

func TempFile(dir, prefix string) (f *os.File, err error)

例:

package main

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

func main() {
    content := []byte("temporary file's test")
    tmpfile, err := ioutil.TempFile("", "example")
    if err != nil {
        log.Fatal(err)
    }

    defer os.Remove(tmpfile.Name()) // 清除临时文件

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

你可能感兴趣的:(Go IO)