本教程展示了如何在 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