Функция os.Truncate

Функция os.Truncate изменяет размер файла на указанный. В первый параметр передается имя файла в виде строки, во второй параметр - новый размер файла в байтах (тип int64). Если файл существует и его размер больше указанного, он будет обрезан. Если размер меньше - файл будет расширен нулевыми байтами. Функция возвращает ошибку, если операция не может быть выполнена (например, файл не существует или недостаточно прав).

Синтаксис

goerr := os.Truncate(filename, size)

Пример

Давайте создадим файл и обрежем его до размера 10 байт:

gopackage 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))
}

Результат выполнения кода:

go"This is a "

Пример

А теперь расширим файл до размера 50 байт (добавится 40 нулевых байт):

gopackage 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())
}

Результат выполнения кода:

go50

Пример

Попробуем обрезать несуществующий файл:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  err := os.Truncate("nonexistent.txt", 100)
  if err != nil {
    fmt.Println(err)
  }
}

Результат выполнения кода:

go"truncate nonexistent.txt: no such file or directory"

Смотрите также

  • функцию os.Create,
    которая создает или перезаписывает файл
  • функцию os.WriteFile,
    которая записывает данные в файл
  • функцию os.ReadFile,
    которая читает содержимое файла
  • функцию os.Stat,
    которая возвращает информацию о файле