在Go语言中,写入文件的模式与我们之前看到的读取文件的模式相似。
package main
import (
"bufio"
"fmt"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
// 首先,这里展示了如何将字符串(或仅仅是字节)转储到文件中。
d1 := []byte("hello\\ngo\\n")
err := os.WriteFile("/tmp/dat1", d1, 0644)
check(err)
// 为了进行更细粒度的写入操作,请以写入模式打开文件。
f, err := os.Create("/tmp/dat2")
check(err)
// 在打开文件后立即使用 defer 来安排关闭操作是一种惯用的做法。
defer f.Close()
// 您可以按照预期的方式写入字节切片。
d2 := []byte{115, 111, 109, 101, 10}
n2, err := f.Write(d2)
check(err)
fmt.Printf("wrote %d bytes\\n", n2)
// 同时,WriteString 方法也是可用的。
n3, err := f.WriteString("writes\\n")
check(err)
fmt.Printf("wrote %d bytes\\n", n3)
// 使用 Sync 方法将写入的数据刷新到稳定的存储介质中。
f.Sync()
// 除了我们之前提到的带缓冲的读取器之外,bufio 包还提供了带缓冲的写入器。
w := bufio.NewWriter(f)
n4, err := w.WriteString("buffered\\n")
check(err)
fmt.Printf("wrote %d bytes\\n", n4)
// 使用 Flush 方法确保所有缓冲的操作都已应用到基础的写入器上。
w.Flush()
}
运行结果:
➜ go run writing-file/writing-file.go
wrote 5 bytes
wrote 7 bytes
wrote 9 bytes
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。