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

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

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

func TempDir(dir, pattern string) (name string, err error)

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

Пример использования ioutil.TempDir

package main

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

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

    defer os.RemoveAll(dir) // очистка

    tmpfn := filepath.Join(dir, "tmpfile")
    if err := ioutil.WriteFile(tmpfn, content, 0666); err != nil {
        log.Fatal(err)
    }
}

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

package main

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

func main() {
    parentDir := os.TempDir()
    logsDir, err := ioutil.TempDir(parentDir, "*-logs")
    if err != nil {
        log.Fatal(err)
    }
    defer os.RemoveAll(logsDir) // очистка

    // Логи могут быть очищены раньше, если необходимо,
    // путем поиска всех каталогов с суффиксом *-logs.
    globPattern := filepath.Join(parentDir, "*-logs")
    matches, err := filepath.Glob(globPattern)
    if err != nil {
        log.Fatalf("Failed to match %q: %v", globPattern, err)
    }

    for _, match := range matches {
        if err := os.RemoveAll(match); err != nil {
            log.Printf("Failed to remove %q: %v", match, 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