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教程。