Эликсир: запись в файл и создание родительских каталогов, если они не существуют - в одну строку - PullRequest
0 голосов
/ 21 декабря 2018

Есть ли в Elixir функция для:

  • записи содержимого в заданный путь к файлу (или, альтернативно, создания файла)
  • создания родительского каталога, если его нетсуществовать

В настоящее время я написал такую ​​функцию, хотя писать ее для каждого проекта, где я хочу записать файл, чьи родители еще не существуют, довольно неудобно.

defp write_to_file(path, contents) do
  with :ok <- File.mkdir_p(Path.dirname(path)),
       :ok <- File.write(path, contents)
  do
    :ok
  end
end

Самая идеальная ситуация для того, чтобы нечто подобное существовало как часть стандартной библиотеки Elixir, однако я не могу найти что-то подобное

File.write(path, content, create_parents: true)

1 Ответ

0 голосов
/ 21 декабря 2018

В стандартной библиотеке нет ничего подобного .Хотя почему бы просто не сделать это:

File.mkdir_p!(Path.dirname(path))
File.write(path, contents)

Но если вы хотите передать ошибки из mkdir, вы можете немного упростить свой код следующим образом:

with :ok <- File.mkdir_p(Path.dirname(path)) do
  File.write(path, contents)
end
...