Elixir:写入文件并创建父目录(如果不存在)-一行

Dyl*_*guy 3 file-io elixir

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
Run Code Online (Sandbox Code Playgroud)

最理想的情况是这样的东西作为Elixir标准库的一部分存在,但是我找不到这样的东西

File.write(path, content, create_parents: true)
Run Code Online (Sandbox Code Playgroud)

She*_*yar 5

标准库中没有类似的东西。尽管为什么不这样做:

File.mkdir_p!(Path.dirname(path))
File.write(path, contents)
Run Code Online (Sandbox Code Playgroud)

但是,如果您要传递来自的错误mkdir,可以将代码简化如下:

with :ok <- File.mkdir_p(Path.dirname(path)) do
  File.write(path, contents)
end
Run Code Online (Sandbox Code Playgroud)