package main
import (
"log"
"os"
)
func main() () {
/* 适合集体文件的修改
myfile, err := os.ReadFile("/home/pi/log")
if err != nil {
log.Printf("Read /home/pi/log failed\r\n")
return
}
log.Printf("myfile:%+v\r\n",myfile)
apd_conf := string("hello")
err = os.WriteFile("/home/pi/log", []byte(apd_conf), 0777)
myfile, err = os.ReadFile("/home/pi/log")
if err != nil {
log.Printf("Read /home/pi/log failed\r\n")
return
}
log.Printf("myfile:%+v\r\n",myfile)
log.Printf("myfile:%+v\r\n",string(myfile))
*/
/*
//文件追加写入 https://blog.csdn.net/whatday/article/details/112246920?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.highlightwordscore&spm=1001.2101.3001.4242.1
f, err := os.OpenFile("/home/pi/log", os.O_WRONLY, 0777)
if err != nil {
log.Printf("Open /home/pi/log failed\r\n")
} else {
content := "123456"
// 查找文件末尾的偏移量
n, _ := f.Seek(0, 2)
// 从末尾的偏移量开始写入内容
_, err = f.WriteAt([]byte(content), n)
}
*/
//上面的方法比较麻烦 正常是打开的时候就定好
f, err := os.OpenFile("/home/pi/log", os.O_WRONLY|os.O_APPEND, 0777)
if err != nil {
log.Printf("Open /home/pi/log failed\r\n")
} else {
content := "123456"
// 查找文件末尾的偏移量
//n, _ := f.Seek(0, 2)
// 从末尾的偏移量开始写入内容
//_, err = f.WriteAt([]byte(content), n)
_, err = f.Write([]byte(content))
}
defer f.Close()
}
写一个测试程序 文件写
package main
import (
"log"
"os"
"flag"
"time"
"strings"
)
//Writefile("/home/pi/log","hello")
func Writefile(filename string, str string)(){
f, err := os.OpenFile(filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0777)
if err != nil {
log.Printf("OpenFile failed\r\n")
} else {
_, err = f.Write([]byte(str))
}
defer f.Close()
log.Printf("Writefile ok\r\n")
}
func Clearfile(filename string)(){
f, err := os.OpenFile(filename, os.O_WRONLY|os.O_TRUNC, 0777)//打开文件 从头开始写 才是覆盖的效果
if err != nil {
log.Printf("OpenFile failed\r\n")
} else {
now_time := time.Now()
currentTime := now_time.Format("2006-01-02")
_, err = f.Write([]byte(currentTime))
}
defer f.Close()
log.Printf("Clearfile ok\r\n")
}
func main() {
flag.Parse()
whattodo := flag.Arg(0)
//根据不同输入参数做不同的事情 因为默认是string 这里就简单用是否包含区分
if strings.Contains(whattodo, "1") {
Writefile("/home/pi/log","hello")
} else {
Clearfile("/home/pi/log")
}
}
golang写入文件时,覆盖前文件(将前文件清空)_刘洪瑞的博客-CSDN博客_go清空文件
flags -- 该参数可以是以下选项,多个使用 "|" 隔开:
- os.O_RDONLY: 以只读的方式打开
- os.O_WRONLY: 以只写的方式打开
- os.O_RDWR : 以读写的方式打开
- os.O_NONBLOCK: 打开时不阻塞
- os.O_APPEND: 以追加的方式打开
- os.O_CREAT: 创建并打开一个新文件
- os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
- os.O_EXCL: 如果指定的文件存在,返回错误
- os.O_SHLOCK: 自动获取共享锁
- os.O_EXLOCK: 自动获取独立锁
- os.O_DIRECT: 消除或减少缓存效果
- os.O_FSYNC : 同步写入
- os.O_NOFOLLOW: 不追踪软链接
- Python os.open() 方法 | 菜鸟教程