【问题标题】:Erlang create directoryErlang 创建目录
【发布时间】:2020-07-13 00:55:43
【问题描述】:

我需要在特定目录中创建子目录。

在 erlang 文档中,我只找到在项目源目录中创建目录的 file:make_dir/1。如何在其他目录中创建目录?

我找到了解决办法。也许有人会很有趣:

filelib:ensure_dir("/this/path/will/soon/exist/").

谢谢。

【问题讨论】:

    标签: erlang directory


    【解决方案1】:

    您可以使用filelib:ensure_dir 确保目录存在(如果不存在,则创建它,这就是您要查找的内容)。

    例子:

    filelib:ensure_dir("/this/path/will/soon/exist/")
    

    参考资料:

    【讨论】:

    • 不确定“/”错误是否仍然存在,但请确保在路径末尾添加一个斜杠,否则它将不起作用(至少在旧版本中是这种情况)。
    • @Mazen Harake:为了安全起见,将其添加到答案中。
    • 我不认为尾随的“/”是一个错误。文档说它为“指定的文件或目录名”创建父目录,所以如果你通过“/this/path/will/soon/exist”,那么它假定“exist”是文件名,并且只会创建父目录直到“很快”,留给您随后创建文件“存在”。
    【解决方案2】:

    文档一定不清楚,因为您可以使用file:make_dir/1 创建通常允许创建的任何目录。它不会在路径中创建所有目录,您必须自己明确地执行此操作。

    使用filelib:ensure_dir/1"/" 终止的路径没有记录,但它在代码中明确处理,所以我怀疑它会消失。

    【讨论】:

      【解决方案3】:

      这将创建一个子目录并确认或创建所需的任何父目录

      make_dir(Dir) ->
        % create or confirm the parent Dir exists (works recursively)
        ok = filelib:ensure_dir(Dir),
        % create or confirm Dir exists
        case file:make_dir(Dir) of
          ok -> ok;
          {error, eexist} -> ok;
          {error, Reason} -> {error, Reason}
        end.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        相关资源
        最近更新 更多