开放的编程资料库

当前位置:我爱分享网 > Go教程 > 正文

Golang中写入文件

Go写入文件教程展示了如何在Golang中写入文件。在Go读取文件中了解如何在Go中读取文件。

要在Go中写入文件,我们使用osioutilfmt包。

func (f *File) WriteString(s string) (n int, err error)

我们使用的函数通常返回写入的字节数和错误(如果有)。

$ go version
go version go1.18.1 linux/amd64

我们使用Go版本1.18。

使用File.WriteString写入文件

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("old falcon\n")

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

    fmt.Println("done")
}

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

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

os.Create创建或截断命名文件。如果文件已存在,则会被截断。

_, err2 := f.WriteString("old falcon\n")

使用WriteString将字符串写入创建的文件。

$ go run write_string.go
done
$ cat data.txt
old falcon

我们运行程序并显示创建文件的内容。

使用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 := "old falcon"
    data := []byte(val)

    _, err2 := f.Write(data)

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

    val2 := " and red fox\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将“oldfalcon”写入文件,然后使用File.WriteAt在其旁边写入“andredfox”。

val := "old falcon"
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
old falcon and red fox

我们运行程序并检查文件。

使用ioutil.WriteFile写入文件

outil.WriteFile将数据写入指定文件。这是一个更高级的便利函数。文件的打开和关闭由我们处理。

package main

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

func main() {

    val := "old falcon\n"
    data := []byte(val)

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

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

    fmt.Println("done")
}

该示例使用ioutil.WriteFile将字符串写入文件。

去写一个切片到文件

以下示例将一段单词写入文件。

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{"sky", "falcon", "rock", "hawk"}

    for _, word := range words {

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

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

    fmt.Println("done")
}

我们定义了一段单词。在for循环中,我们遍历切片并将所有单词写入文件。

$ go run write_slice.go 
done
$ cat data.txt 
sky
falcon
rock
hawk

我们运行程序并显示创建文件的内容。

去写格式化字符串

fmt.Fprintln使用其操作数的默认格式格式化字符串并将其写入编写器。始终在操作数之间添加空格并附加换行符。

package main

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

func main() {

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

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

    defer f.Close()

    const name, age = "Johne Doe", 34

    n, err := fmt.Fprintln(f, name, "is", age, "years old.")

    if err != nil {

        log.Fatal(err)
    }

    fmt.Println(n, "bytes written")
    fmt.Println("done")
}

在代码示例中,我们有两个变量:nameage。我们从变量构建一个字符串并将其写入创建的文件。我们还打印写入的字节数。

$ go run write_formatted.go 
27 bytes written
done
$ cat data.txt 
Johne Doe is 34 years old.

我们运行程序并显示创建文件的内容。

在本教程中,我们介绍了在Go中写入文件。

列出所有Go教程。

未经允许不得转载:我爱分享网 » Golang中写入文件

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏