Golang写文件的坑
Golang写文件一般使用os.OpenFile
返回文件指针的Write
方法或者WriteString
或者WriteAt
方法,但是在使用这三个方法时候经常会遇到写入的内容和实际内容有出入,因为这几个函数采用的不是清空覆盖的方式,有时字符串或数组长度和文件内容不一致的时候只覆盖了一部分,这就需要在调用os.OpenFile
的时候加上os.O_TRUNC
如下:
f, err := os.OpenFile(dst, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, os.ModePerm)
写文件工具函数封装如下:
func WriteToFile(path string, content string) error {
f, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil {
fmt.Println("file create failed. err: " + err.Error())
} else {
//os.Truncate(path, 0) //clear
n, _ := f.Seek(0, os.SEEK_END)
_, err = f.WriteAt([]byte(content), n)
defer f.Close()
}
return err
}