Erlang中文手册(Erldoc.com)  »  filelib  »  ensure_dir/1
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

filelib:ensure_dir/1

确定文件或目录的所有父目录都已经存在

用法:

ensure_dir(Name) -> ok | {error, Reason}

内部实现:

%%----------------------------------------------------------------------
%% +type ensure_dir(X) -> ok | {error, Reason}.
%% +type X = filename() | dirname()
%% ensures that the directory name required to create D exists

-spec ensure_dir(Name) -> 'ok' | {'error', Reason} when
      Name :: filename() | dirname(),
      Reason :: file:posix().
ensure_dir("/") ->
    ok;
ensure_dir(F) ->
    Dir = filename:dirname(F),
    case do_is_dir(Dir, file) of
	true ->
	    ok;
	false when Dir =:= F ->
	    %% Protect against infinite loop
	    {error,einval};
	false ->
	    ensure_dir(Dir),
	    case file:make_dir(Dir) of
		{error,eexist}=EExist ->
		    case do_is_dir(Dir, file) of
			true ->
			    ok;
			false ->
			    EExist
		    end;
		Err ->
		    Err
	    end
    end.

判定确保对给出的文件名或文件夹名 Name 的上层所有父目录是否存在。如果有必要, 该函数会尝试创建缺失的父目录路径。当所有的父目录都存在或者可以被创建时,则返回 ok;如果部分父目录不存在并且创建不成功时,则返回 {error, Reason}。

filelib:ensure_dir("./test_dir/").
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9