Функция os.CreateTemp

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

Синтаксис

goos.CreateTemp(dir, pattern)

Пример

Давайте создадим временный файл в системной временной директории со стандартным шаблоном имени:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.CreateTemp("", "temp-*.txt")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer os.Remove(file.Name())
  defer file.Close()

  fmt.Println(file.Name())
}

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

go"/tmp/temp-1234567890.txt"

Пример

Давайте создадим временный файл в конкретной директории с кастомным шаблоном:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  dir := "./tmp"
  file, err := os.CreateTemp(dir, "app-*.log")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer os.Remove(file.Name())
  defer file.Close()

  fmt.Println(file.Name())
}

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

go"tmp/app-5678901234.log"

Пример

Давайте запишем данные во временный файл и прочитаем их обратно:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.CreateTemp("", "data-*.txt")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer os.Remove(file.Name())
  defer file.Close()

  content := []byte("hello world")
  _, err = file.Write(content)
  if err != nil {
    fmt.Println(err)
    return
  }

  err = file.Sync()
  if err != nil {
    fmt.Println(err)
    return
  }

  file.Seek(0, 0)
  res := make([]byte, len(content))
  file.Read(res)

  fmt.Println(string(res))
}

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

go"hello world"

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

  • функцию os.Create,
    которая создает обычный файл
  • функцию os.OpenFile,
    которая открывает файл с заданными флагами
  • функцию os.MkdirTemp,
    которая создает временную директорию
  • функцию os.Remove,
    которая удаляет файл или директорию