【erlang】文件操作

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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值