os.O_TRUNC 是做什么的?

What does os.O_TRUNC do?

func OpenFile(name string, flag int, perm FileMode) (*File, error)

f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE|O_TRUNC, 0755)

是否"O_TRUNC"在写入前清空整个文件? "truncates" 是什么意思?

另外,函数ioutil.WriteFile()是否会在写入前清空整个文件?

之前使用措辞 "if possible" 对 os.O_TRUNC 的定义存在一些混淆 - 请参阅 here

今天 docs 阅读:

O_TRUNC  int = syscall.O_TRUNC  // truncate regular writable file when opened.

所以

Does "O_TRUNC" empty the entire file before writing ?

是的。它基本上破坏了文件的内容 - 如果文件路径已经存在(并且是一个文件或指向现有文件的符号链接)。

ioutil.WriteFile docs类似:

... WriteFile truncates it before writing.