1、创建文件路径
filelib:ensure_dir(FileName).
{ok,#file_info{size = FileSize}} = file:read_file_info(FilePath),
file:make_dir(Dir).
2、写入文件
Data = unicode:characters_to_binary(io_lib:format(Format, Args)),
file:write_file(FileName, Data, [write, {encoding, utf8}]).
{ok,Fd} = file:open(Filename, [append,binary,{encoding,utf8}]),
file:write(Fd, Code),
io:format(Fd, "~ts", [Str]),
file:close(Fd).
3、读取文件
{ok,Data} = file:read_file(FileName).
{ok, Fd} = file:open(File, [read, binary, raw]),
行 io:get_line(Fd, '') | 位 cover:get_term(Fd) |
file:close(Fd).
{ok,KeyValues} = file:consult(KvFile).
KvFile | KeyValues:: {Key1, Val1}. {Key2,Val2}.
4、加载erlang代码文件
{ok, Mod, Bin} = compile:file(BeamPath, [binary, {i, "config/erl"}]),
{module, _} = code:load_binary(Mod, ModName, Bin),
5、动态编译
{Mod,Code} = dynamic_compile:from_string(Src, []),
code:load_binary(Mod, ModName, Code),
6、拼接字符串
io_lib:format(“~ts, ~s,~w,~p”,[<<"中文"/utf8>>, Str, Int, List]).
lists:flatten(lists:concat([Str1, Str2])).
unicode:characters_to_binary(io_lib:format(Format, Args)).
7、文件信息
{ok, #file_info{}} = file:read_file_info(File).
filename:basename(FileName, ".xls"). %文件名
filename:extension(FileName). %文件后缀名
8、目录操作
filename:join([Dir, "*", "mod_role_*.erl"]). %拼接文件路径
filelib:fold_files(Dir, RegExp, Recursive, Fun, Acc). %遍历目录下文件
filelib:fold_files(Dir, ".erl", true, fun(File, Acc) -> [File | Acc] end, []),
filelib:wildcard("*.hrl"). %读取文件列表
9、复制和删除文件
file:copy(Source, Destination).
file:delete(File).
10、文件&ETS
ets:file2tab(Filename) -> {ok, Data}. %file => ets
ets:tab2file(ETSName, FileName). %ets => file
11、字符串转换为文件并加载(动态编译)
gen_code(ModukeName, CodeStr) ->
"-module("++ ModuleName ++")" ++ CodeStr.
load_module(ModuleName, CodeStr) ->
Src = gen_code(ModuleName, CodeStr),
{Mod, Code} = dynamic_compile:from_string(Src),
code:load_binary(Mod, ModuleName, ".erl", Code),
file:write_file(lists:concat(["/ebin/", ModuleName, ".beam"]), Code, [write, binary]),
ok.
12、文件名处理
File = "/server/test.erl",
filename:dirname(File), %路径名 "/server"
filename:basename(File), %文件名(有后缀) "test.erl"
filename:rootname(File), %文件名(无后缀) "/server/test"
filename:absname(File), %完整路径 "/server/test.erl"
filename:extension(File), %文件后缀 ".erl"