Go写入文件教程展示了如何在Golang中写入文件。在Go读取文件中了解如何在Go中读取文件。
要在Go中写入文件,我们使用os、ioutil和fmt包。
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")
}
在代码示例中,我们有两个变量:name和age。我们从变量构建一个字符串并将其写入创建的文件。我们还打印写入的字节数。
$ go run write_formatted.go 27 bytes written done $ cat data.txt Johne Doe is 34 years old.
我们运行程序并显示创建文件的内容。
在本教程中,我们介绍了在Go中写入文件。
列出所有Go教程。
