Golang os.Создать путь с вложенными каталогами - PullRequest
0 голосов
/ 29 января 2020

Как упоминалось в GoDocs, os.Create() создает файл с указанным c путем.

os.Create("fonts/foo/font.eot")

Но когда fonts или foo не существует, он возвращает panic: open fonts/foo/font.eot: The system cannot find the path specified.
Так что я использовал os.MkdirAll() для создания вложенного каталога. Но есть много других проблем с этой функцией.

path := "fonts/foo/font.eot"
// this line create a directory named (font.eot) !
os.MkdirAll(path, os.ModePerm)

Есть ли лучший способ создать файл во вложенных каталогах?

1 Ответ

4 голосов
/ 29 января 2020

Стандартный способ выглядит примерно так:

func create(p string) (*os.File, error) {
    if err := os.MkdirAll(filepath.Dir(p), 0770); err != nil {
        return nil, err
    }
    return os.Create(p)
}

Несколько замечаний:

  • os.Create не создает pani c, как указано в вопросе.
  • Создайте каталог из части каталога пути к файлу, а не по полному пути.
...