Функция os.Truncate
Функция os.Truncate изменяет размер файла на указанный.
В первый параметр передается имя файла в виде строки,
во второй параметр - новый размер файла в байтах (тип int64).
Если файл существует и его размер больше указанного,
он будет обрезан. Если размер меньше - файл будет расширен
нулевыми байтами. Функция возвращает ошибку, если операция
не может быть выполнена (например, файл не существует
или недостаточно прав).
Синтаксис
err := os.Truncate(filename, size)
Пример
Давайте создадим файл и обрежем его до размера 10 байт:
package main
import (
"fmt"
"os"
)
func main() {
filename := "example.txt"
data := []byte("This is a long string for testing truncation")
err := os.WriteFile(filename, data, 0644)
if err != nil {
fmt.Println("Error writing file:", err)
return
}
err = os.Truncate(filename, 10)
if err != nil {
fmt.Println("Error truncating file:", err)
return
}
res, err := os.ReadFile(filename)
if err != nil {
fmt.Println("Error reading file:", err)
return
}
fmt.Println(string(res))
}
Результат выполнения кода:
"This is a "
Пример
А теперь расширим файл до размера 50 байт (добавится 40 нулевых байт):
package main
import (
"fmt"
"os"
)
func main() {
filename := "example.txt"
data := []byte("Hello")
err := os.WriteFile(filename, data, 0644)
if err != nil {
fmt.Println("Error writing file:", err)
return
}
err = os.Truncate(filename, 50)
if err != nil {
fmt.Println("Error truncating file:", err)
return
}
info, err := os.Stat(filename)
if err != nil {
fmt.Println("Error getting file info:", err)
return
}
fmt.Println(info.Size())
}
Результат выполнения кода:
50
Пример
Попробуем обрезать несуществующий файл:
package main
import (
"fmt"
"os"
)
func main() {
err := os.Truncate("nonexistent.txt", 100)
if err != nil {
fmt.Println(err)
}
}
Результат выполнения кода:
"truncate nonexistent.txt: no such file or directory"
Смотрите также
-
функцию
os.Create,
которая создает или перезаписывает файл -
функцию
os.WriteFile,
которая записывает данные в файл -
функцию
os.ReadFile,
которая читает содержимое файла -
функцию
os.Stat,
которая возвращает информацию о файле