Показаны сообщения с ярлыком создание временного файла в Golang. Показать все сообщения
Показаны сообщения с ярлыком создание временного файла в Golang. Показать все сообщения

воскресенье, 19 июля 2020 г.

Пакет ioutil в Golang, функция TempFile для создания временных файлов

func TempFile(dir, pattern string) (f *os.File, err error)

TempFile создает новый временный файл в каталоге dir, открывает файл для чтения и записи и возвращает полученный *os.File. Имя файла генерируется путем взятия pattern и добавления случайной строки в конец. Если pattern содержит "*", случайная строка заменяет последнюю "*". Если dir - пустая строка, TempFile использует каталог по умолчанию для временных файлов (полученный от функции os.TempDir). Несколько программ, вызывающих TempFile одновременно, не будут выбирать один и тот же файл. Вызывающая сторона может использовать f.Name(), чтобы найти путь к файлу. Вызывающий абонент должен удалить файл, когда он больше не нужен.

Пример использования TempFile

package main

import (
    "io/ioutil"
    "log"
    "os"
)

func main() {
    content := []byte("temporary file's content")
    tmpfile, err := ioutil.TempFile("", "example")
    if err != nil {
        log.Fatal(err)
    }

    defer os.Remove(tmpfile.Name()) // очистка

    if _, err := tmpfile.Write(content); err != nil {
        log.Fatal(err)
    }
    if err := tmpfile.Close(); err != nil {
        log.Fatal(err)
    }
}

Пример использования TempFile с суффиксом

package main

import (
    "io/ioutil"
    "log"
    "os"
)

func main() {
    content := []byte("temporary file's content")
    tmpfile, err := ioutil.TempFile("", "example.*.txt")
    if err != nil {
        log.Fatal(err)
    }

    defer os.Remove(tmpfile.Name()) // очистка

    if _, err := tmpfile.Write(content); err != nil {
        tmpfile.Close()
        log.Fatal(err)
    }
    if err := tmpfile.Close(); err != nil {
        log.Fatal(err)
    }
}


Читайте также:


купить игрушку gopher

вторник, 21 апреля 2020 г.

Создание временного файла или каталога в Golang

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

Используйте ioutil.TempFile в пакете io/ioutil, чтобы создать глобально уникальный временный файл. Это ваша собственная задача - удалить файл, когда он больше не нужен.

file, err := ioutil.TempFile("dir", "prefix")
if err != nil {
    log.Fatal(err)
}
defer os.Remove(file.Name())

fmt.Println(file.Name()) // Например "dir/prefix054003078"

Вызов ioutil.TempFile

  • создает новый файл с именем, начинающимся с "prefix" в каталоге "dir",
  • открывает файл для чтения и записи,
  • и возвращает новый *os.File.

Чтобы поместить новый файл в os.TempDir(), каталог по умолчанию для временных файлов, вызовите ioutil.TempFile с пустой строкой каталога.

Добавить суффикс к имени временного файла (с версии Go 1.11)

Начиная с Go 1.11, если вторая строка, заданная для TempFile, содержит "*", случайная строка заменяет эту "*".

file, err := ioutil.TempFile("dir", "myname.*.bat")
if err != nil {
    log.Fatal(err)
}
defer os.Remove(file.Name())

fmt.Println(file.Name()) 
// Например "dir/myname.054003078.bat"

Если "*" не включено, старое поведение сохраняется, и случайные цифры добавляются в конец.

Создание временного каталога

Используйте ioutil.TempDir в пакете io/ioutil, чтобы создать глобально уникальный временный каталог.

dir, err := ioutil.TempDir("dir", "prefix")
if err != nil {
 log.Fatal(err)
}
defer os.RemoveAll(dir)

Вызов ioutil.TempDir

  • создает новый каталог с именем, начинающимся с "prefix" в каталоге "dir"
  • и возвращает путь к новому каталогу.

Чтобы поместить новый каталог в os.TempDir(), каталог по умолчанию для временных файлов, вызовите ioutil.TempDir с пустой строкой каталога.


Читайте также:


купить игрушку gopher