Go 写入文件
最后修改时间 2024 年 4 月 11 日
本文介绍如何在 Golang 中写入文件。请参阅 Go 读取文件,了解如何在 Go 中读取文件。
在 Go 中写入文件,我们使用 os、ioutil 和 fmt 包。
func (f *File) WriteString(s string) (n int, err error)
我们使用的函数通常会返回写入的字节数以及可能发生的错误。
Go 使用 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
我们运行程序并显示创建的文件的内容。
Go 使用 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 将“old falcon”写入文件,然后我们使用 File.WriteAt 将“ and red fox”写在后面。
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
我们运行程序并检查文件。
Go 使用 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 将字符串写入文件。
Go 写入切片到文件
下面的示例将一个单词切片写入文件。
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
我们运行程序并显示创建的文件的内容。
Go 写入格式化字符串
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")
}
在代码示例中,我们有两个变量:name 和 age。我们从这些变量构建一个字符串并将其写入创建的文件。我们还打印了写入的字节数。
$ go run write_formatted.go 27 bytes written done $ cat data.txt Johne Doe is 34 years old.
我们运行程序并显示创建的文件的内容。
来源
本文介绍了在 Go 中写入文件。