在Go中读取和写入文件
在本教程中,我们将介绍如何使用go语言有效地读取和写入文件系统中的文件。

我们将用于读取和写入这些文件的方法将与文件格式无关。这意味着你将能够使用我们将要覆盖的技术来读写,.txt,.csv,.xls等,这些文件唯一不同的是您写入每种文件类型的数据结构。
##读取文件
main.go
package main
// 导入我们需要的2个模块
import (
"fmt"
"io/ioutil"
)
func main() {
// 读取文件 localfile.data 的内容
data, err := ioutil.ReadFile("localfile.data")
// 如果我们的程序无法读取该文件
// 打印出它不能读取的原因
if err != nil {
fmt.Println(err)
}
// 如果读取成功,将内容打印为字符串
fmt.Print(string(data))
}
##将文件写入新文件 我们已经介绍了Go中的文件读取,现在是时候看看创建和写入我们自己的文件了! 代码说话:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
mydata := []byte("All the data I wish to write to a file")
// 如果不成功,WriteFile方法返回错误
err := ioutil.WriteFile("myfile.data", mydata, 0777)
// 处理错误,打印出来
if err != nil {
fmt.Println(err)
}
data, err := ioutil.ReadFile("myfile.data")
if err != nil {
fmt.Println(err)
}
fmt.Print(string(data))
}
很简单,先定义来字节数组;写入到myfile.data,再去读取它并打印输出。
##写入已有文件 写入信息到现有文件,会发生什么?
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
mydata := []byte("All the data I wish to write to a file\n")
// 如果不成功,WriteFile方法返回错误
err := ioutil.WriteFile("myfile.data", mydata, 0777)
if err != nil {
fmt.Println(err)
}
data, err := ioutil.ReadFile("myfile.data")
if err != nil {
fmt.Println(err)
}
fmt.Print(string(data))
f, err := os.OpenFile("myfile.data", os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
panic(err)
}
defer f.Close()
if _, err = f.WriteString("new data that wasn't there originally\n"); err != nil {
panic(err)
}
data, err = ioutil.ReadFile("myfile.data")
if err != nil {
fmt.Println(err)
}
fmt.Print(string(data))
}
运行看看。
ioutil.WriteFile("myfile.data", mydata, 0777)会清空已有内容,并写入新的内容;
os.OpenFile("myfile.data", os.O_APPEND|os.O_WRONLY, 0600)和f.WriteString("new data that wasn't there originally\n")会以追加的方式打开文件,并在文件末尾追加内容。
##文件权限 在操作文件时,文件权限是比较重要的,特别是写入和追加内容时。
##小结 就是文件的读取和写入,比较简单。
最后修改于 2019-07-29