清风徐来
Michael's Blog
在Go中读取和写入文件

在本教程中,我们将介绍如何使用go语言有效地读取和写入文件系统中的文件。

在Go中读取和写入文件

我们将用于读取和写入这些文件的方法将与文件格式无关。这意味着你将能够使用我们将要覆盖的技术来读写,.txt,.csv,.xls等,这些文件唯一不同的是您写入每种文件类型的数据结构。

##读取文件

main.go

package main

// 导入我们需要的2个模块
import (
    "fmt"
    "io/ioutil"
)

func main() {
    // 读取文件 localfile.data 的内容
    data, err := ioutil.ReadFile("localfile.data")
    // 如果我们的程序无法读取该文件
    // 打印出它不能读取的原因
    if err != nil {
        fmt.Println(err)
    }

    // 如果读取成功,将内容打印为字符串
    fmt.Print(string(data))
}

##将文件写入新文件 我们已经介绍了Go中的文件读取,现在是时候看看创建和写入我们自己的文件了! 代码说话:

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {

    mydata := []byte("All the data I wish to write to a file")

    // 如果不成功,WriteFile方法返回错误
    err := ioutil.WriteFile("myfile.data", mydata, 0777)
    // 处理错误,打印出来
    if err != nil {
        fmt.Println(err)
    }

    data, err := ioutil.ReadFile("myfile.data")
    if err != nil {
        fmt.Println(err)
    }

    fmt.Print(string(data))

}

很简单,先定义来字节数组;写入到myfile.data,再去读取它并打印输出。

##写入已有文件 写入信息到现有文件,会发生什么?

package main

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

func main() {

    mydata := []byte("All the data I wish to write to a file\n")

    // 如果不成功,WriteFile方法返回错误
    err := ioutil.WriteFile("myfile.data", mydata, 0777)
    if err != nil {
        fmt.Println(err)
    }

    data, err := ioutil.ReadFile("myfile.data")
    if err != nil {
        fmt.Println(err)
    }

    fmt.Print(string(data))

    f, err := os.OpenFile("myfile.data", os.O_APPEND|os.O_WRONLY, 0600)
    if err != nil {
        panic(err)
    }
    defer f.Close()

    if _, err = f.WriteString("new data that wasn't there originally\n"); err != nil {
        panic(err)
    }

    data, err = ioutil.ReadFile("myfile.data")
    if err != nil {
        fmt.Println(err)
    }

    fmt.Print(string(data))

}

运行看看。 ioutil.WriteFile("myfile.data", mydata, 0777)会清空已有内容,并写入新的内容; os.OpenFile("myfile.data", os.O_APPEND|os.O_WRONLY, 0600)f.WriteString("new data that wasn't there originally\n")会以追加的方式打开文件,并在文件末尾追加内容。

##文件权限 在操作文件时,文件权限是比较重要的,特别是写入和追加内容时。

##小结 就是文件的读取和写入,比较简单。


最后修改于 2019-07-29