Очистка файла перед записью

Задался вопросом в процессе разработки, каким же образом перед записью в файл его можно очистить?

К примеру в текстовом файле у меня содержится на первой строке словосочетание "Привет, мир!". В зависимости от ситуации, которая произойдет в потоке выполнения программы я бы хотел перезаписать значение, например на "Прощай, мир!". Но если просто повторно произвести операцию file.WriteString("Прощай, мир!"), то произойдет конкатенация.

В таком случае нужно, чтобы перед записью файл очистился, курсор переставился на нулевую позицию, что ли.


Ответы (1 шт):

Автор решения: Ainar-G

Если хотите очистить при открытии, то просто передайте в OpenFile флаг O_TRUNC. При работе с уже открытым же файлом, вам нужно вызвать метод Seek для «перемотки» в начало и метод Truncate для уменьшения размера файла:

_, _ = f.WriteString("Hello, world!\n")
check(err)

_, err = f.Seek(0, io.SeekStart)
check(err)

err = f.Truncate(0)
check(err)

_, err = f.WriteString("Goodbye, world!\n")
check(err)
→ Ссылка