本教程展示了如何在 Golang 中写入文件。 在 Go 中读取文件请参考:go语言读取文件内容。

本教程环境:windows 10、go 1.18.4 ,用到的包: os、ioutil、fmt 。

C:\Users\Administrator>go version
go version go1.18.4 windows/amd64

使用 File.WriteString 写入文件

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {

    f, err := os.Create("data.txt")

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

    defer f.Close()

    _, err2 := f.WriteString("www.02405.com\n")

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

    fmt.Println("done")
}

该示例将字符串写入文本文件。

f, err := os.Create("data.txt")

os.Create 创建或重置命名文件。 如果文件已存在,则将其重置。

_, err2 := f.WriteString("www.02405.com\n")

使用WriteString将字符串写入文件

$ go run write_string.go
done
$ cat data.txt
www.02405.com

使用 File.Write/File.WriteAt 写入文件

File.Write 将 n 个字节写入文件。 File.WriteAt 从指定的字节偏移量开始将 n 个字节写入文件。

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {

    f, err := os.Create("data.txt")

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

    defer f.Close()

    val := "www.02405.com"
    data := []byte(val)

    _, err2 := f.Write(data)

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

    val2 := " 零五网\n"
    data2 := []byte(val2)

    var idx int64 = int64(len(data))

    _, err3 := f.WriteAt(data2, idx)

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

    fmt.Println("done")
}

首先我们通过 File.Write方法想文件中写入了“www.02405.com”,然后通过File.WriteAt在它后面写入“零五网”。

val := "www.02405.com"
data := []byte(val)

将字符串转换成字节

_, err2 := f.Write(data)

通过Write方法写入字节

var idx int64 = int64(len(data))

计算之前写入的字符串长度

_, err3 := f.WriteAt(data2, idx)

通过WriteAt在指定的索引位置写入字符串。

$ go run write_bytes.go
done
$ cat data.txt
www.02405.com 零五网

使用 ioutil.WriteFile 写入文件

使用 outil.WriteFile 将数据写入指定文件,这是一个更高级别的功能,文件的打开和关闭由我们自行处理。

package main

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

func main() {

    val := "www.02405.com\n"
    data := []byte(val)

    err := ioutil.WriteFile("data.txt", data, 0)

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

    fmt.Println("done")
}

将切片写入文件

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {
    f, err := os.Create("data.txt")

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

    defer f.Close()

    words := []string{"零五网", "www.02405.com"}

    for _, word := range words {

        _, err := f.WriteString(word + "\n")

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

    fmt.Println("done")
}
$ go run write_slice.go 
done
$ cat data.txt 
零五网
www.02405.com
(adsbygoogle = window.adsbygoogle || []).push({});