Константа os.O_TRUNC
Константа os.O_TRUNC применяется совместно с флагами открытия файлов в функциях os.OpenFile и os.Create. При использовании этого флага существующий файл при открытии будет обрезан до нулевой длины, то есть все его содержимое будет удалено. Обычно os.O_TRUNC комбинируется с флагами os.O_WRONLY или os.O_RDWR, так как обрезка имеет смысл только при записи в файл. Если файл не существует, данный флаг не создает новый файл — для этого необходимо дополнительно указать os.O_CREATE.
Синтаксис
os.OpenFile("filename", os.O_WRONLY|os.O_TRUNC, 0644)
Пример
Давайте откроем существующий файл для записи, обрезав его содержимое:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("data.txt", os.O_WRONLY|os.O_TRUNC, 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
_, err = file.WriteString("new content")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("file truncated and written successfully")
}
Результат выполнения кода:
"file truncated and written successfully"
Пример
Давайте попробуем открыть несуществующий файл с флагом os.O_TRUNC без os.O_CREATE:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("missing.txt", os.O_WRONLY|os.O_TRUNC, 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
fmt.Println("file opened successfully")
}
Результат выполнения кода:
"Error: open missing.txt: no such file or directory"
Пример
Давайте создадим новый файл и сразу обрежем его до нулевой длины с помощью комбинации флагов os.O_CREATE и os.O_TRUNC:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("new.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
_, err = file.WriteString("hello world")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("file created and written successfully")
}
Результат выполнения кода:
"file created and written successfully"
Смотрите также
-
константу
os.O_CREATE,
которая создает файл, если он не существует -
константу
os.O_APPEND,
которая дописывает данные в конец файла -
константу
os.O_EXCL,
которая используется сos.O_CREATEдля создания файла только если его нет -
функцию
os.OpenFile,
которая открывает файл с указанными флагами и правами доступа