Функция os.CreateTemp
Функция os.CreateTemp создает новый временный файл в системной директории для временных файлов или в указанной пользователем директории. В первый параметр передается путь к директории, где будет создан файл (если передать пустую строку, файл будет создан в стандартной системной временной директории). Во второй параметр передается шаблон имени файла, который может содержать символ *, заменяемый на случайный суффикс для обеспечения уникальности. Функция возвращает указатель на os.File и ошибку, если создать файл не удалось. Созданный файл открывается в режиме чтения и записи.
Синтаксис
os.CreateTemp(dir, pattern)
Пример
Давайте создадим временный файл в системной временной директории со стандартным шаблоном имени:
package 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())
}
Результат выполнения кода:
"/tmp/temp-1234567890.txt"
Пример
Давайте создадим временный файл в конкретной директории с кастомным шаблоном:
package 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())
}
Результат выполнения кода:
"tmp/app-5678901234.log"
Пример
Давайте запишем данные во временный файл и прочитаем их обратно:
package 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))
}
Результат выполнения кода:
"hello world"
Смотрите также
-
функцию
os.Create,
которая создает обычный файл -
функцию
os.OpenFile,
которая открывает файл с заданными флагами -
функцию
os.MkdirTemp,
которая создает временную директорию -
функцию
os.Remove,
которая удаляет файл или директорию