cpp

Создание временных файлов

Функция CreateTemp() из пакета os создает новый временный файл и открывает его для чтения и записи. Формат функции:

os.CreateTemp(dir string, pattern string) (*os.File, error)

В первом параметре указывается путь к каталогу, в котором будет создан временный файл. Во втором параметре задается шаблон названия файла. Если внутри шаблона есть символ *, то вместо него будет вставлено уникальное значение:

file, _ := os.CreateTemp(`C:\book`, `tmp_*.txt`)
fmt.Println(file.Name()) // C:\book\tmp_3483064178.txt

Если символа * нет, то уникальное значение добавляется в конец строки шаблона:

file, _ := os.CreateTemp(`C:\book`, `tmp_`)
fmt.Println(file.Name()) // C:\book\tmp_4150495032

Если файл нужно создать в каталоге для временных файлов, то в первом параметре следует передать пустую строку. В этом случае будет использоваться значение, возвращаемое функцией TempDir(). Формат функции:

os.TempDir() string

Пример:

file, _ := os.CreateTemp("", `tmp_*.txt`)
fmt.Println(os.TempDir())
// C:\Users\Unicross\AppData\Local\Temp
fmt.Println(file.Name())
// C:\Users\Unicross\AppData\Local\Temp\tmp_528943209.txt

Созданный временный файл автоматически не удаляется. Его нужно удалять вручную с помощью функции Remove(). Пример создания и удаления временного файла приведен в листинге 14.3. Запустите программу и понаблюдайте за каталогом C:\book в течение пяти секунд. Файл будет создан, а затем удален.

Листинг 14.3. Создание и удаление временного файла

package main

import (
   "fmt"
   "os"
   "time"
)

func main() {
   file, err := os.CreateTemp(`C:\book`, `tmp_*.txt`)
   if err != nil {
      fmt.Println(err)
      return
   }
   defer os.Remove(file.Name())  // Удаляем файл
   fmt.Println(file.Name())      // C:\book\tmp_2979276490.txt
   time.Sleep(5 * time.Second)
   if err = file.Close(); err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println("Операция выполнена успешно")
}

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp