os.OpenFile()函数能够以指定的模式打开文件,从而实现文件写入相关功能
核心代码:
func OpenFile(name string, flag int,perm FileMode) (*File, error) {
...
}
其中:
name:要打开的文件名 flag:打开文件的模式。模式有以下几种:
- os.O_WRONLY: 只写
- os.O_CREATE: 创建文件
- os.O_RDONLY: 只读
- os.O_RDWR: 读写
- os.O_TRUNC: 清空
- os.O_APPEND: 追加
perm:文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01,此参数在linux中用的比较多,windows中不会用到
创建打开文件设置文件打开权限
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.OpenFile("./xxx.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
fmt.Printf("open file failed, err:%v", err)
return
}
}
向文件内写入字符串
package main
import (
"fmt"
"os"
)
func main() {
//此处的意思为打开文件只写,没有文件则创建,再次执行就向文件内追加字符串
fileObj, err := os.OpenFile("./xxx.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
fmt.Printf("open file failed, err:%v", err)
return
}
defer fileObj.Close()
fileObj.Write([]byte("到达世界最高城!理塘!\n"))
fileObj.WriteString("太美啦理塘!")
}
将追加换位覆盖
package main
import (
"fmt"
"os"
)
func main() {
//此处将O_APPEND换为了O_TRUNC
fileObj, err := os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0777)
if err != nil {
fmt.Printf("open file field, err:%v\n", err)
return
}
defer fileObj.Close()
fileObj.Write([]byte("happy new year!\n"))
fileObj.WriteString("Suknna")
}
使用bufio来进行写入
package main
import (
"bufio"
"fmt"
"os"
)
func writeDemo1() {
fileObj, err := os.OpenFile("xxx.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0774)
if err != nil {
fmt.Printf("open file field!,err:%v", err)
return
}
defer fileObj.Close()
//创建一个写的对象
wr := bufio.NewWriter(fileObj)
//这里只是把字符串缓存到了wr对象中
wr.WriteString("蒙古上单")
//我们需要将缓存写入到文件中
wr.Flush()
}
func main() {
writeDemo1()
}
通过ioutil.WriteFile写文件
package main
import (
"fmt"
"io/ioutil"
)
func fileDemo() {
str := "hello world!"
err := ioutil.WriteFile("./xxx.txt", []byte(str), 666)
if err != nil {
fmt.Printf("write file failed, err:%v\n", err)
return
}
}
func main() {
fileDemo()
}
标签:文件,func,err,fmt,写入,fileObj,main,os
From: https://www.cnblogs.com/suknna/p/17103321.html