Erlang文件操作的基础模块是file模块
我最喜欢的一种文本文件读写方法
写列表到Erlang数据文件
{ok, S} = file:open(File, Write),
lists:foreach(fun(X)->io:format(S,"~p.~n", [X]) end, L),
file:close(S).
随机写文件
{ok, S} = file:open(File, write),
io:format(S, "~s~n", ["Hello world"]),
io:format(S, "~w~n", [1234]),
io:format(S, '~p~n", [{age,27},{name,"song"}]),
file:close(S).
读取整个Erlang数据文件,存到列表变量
{ok,List} = file:consult(File)
出错则返回 {error,Why}
列表的每一个元素在文件中以'.'分割
文件中的Erlang数据用'.'分割,形如:
{name,{{first,jason},{last,james}}}.
{address,"china shanghai"}.
-------------------------------------------------
读取整个文件,存到二进制变量
{ok, Bin} = file:read_file(File)
出错则返回 {error,Why}
将二进制数据写入整个文件
file:write_file(File, Bin)
二进制数据可转换成列表
binary_to_list(Bin)
--------------------------------------------------------
查询文件的属性
file:read_file_info(File) 返回的数据符合记录#file_info(在文件file.hrl中定义)
复制文件
file:copy(SrcFile, DestFile)
删除文件
file:delete(File)
---------------------------------
file模块有三个函数用来操纵目录,Dir可以是绝对路径活相对路径
file:list_dir(Dir)生成Dir目录下的文件列表
file:make_dir(Dir)创建一个新的目录
file:del_dir(Dir)删除一个目录
注:file:list_dir(Dir)和file:read_file_info(File)结合可以实现文件搜索/遍历功能