воскресенье, 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)
        }
    }
}


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


Комментариев нет:

Отправить комментарий