Что делает os.O_TRUNC? - PullRequest
       49

Что делает os.O_TRUNC?

1 голос
/ 03 ноября 2019

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" очищает весь файл перед записью? Что они имеют в виду под «усечением»?

Кроме того, функция ioutil.WriteFile() очищает весь файл перед записью?

1 Ответ

2 голосов
/ 03 ноября 2019

В предыдущих определениях os.O_TRUNC была некоторая путаница с использованием глагола «если возможно» - см. здесь .

Сегодня документы читаются:

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

Итак

Очищает ли "O_TRUNC" весь файл перед записью?

Да. По сути, он забивает содержимое файла - если путь к файлу уже существует (и является файлом или символической ссылкой на существующий файл).

Аналогично из ioutil.WriteFile docs :

... WriteFile обрезает его перед записью.

...