例如,我有一个列表,我想保存为具有许多其他erlang类型的文件。然后我想将它加载回一个过程我会用什么? io_lib:format("~P", [Term])
io:write
然后file:consult
?
答案 0 :(得分:3)
作为legoscia解决方案的替代方案,您还可以将erlang:term_to_binary/1
的结果写入文件,并使用erlang:binary_to_term/1
将其读回。但是,这种方法有一些注意事项:
erlang:term_to_binary/1
可以生成空字符和换行符,这可能会导致解析问题。但是,有几种方法可以解决这个问题:
erlang:term_to_binary({T1, T2, T3})
file:consult
没有等效的term_to_binary
,因此您必须明确阅读(作为二进制文件),然后运行binary_to_term
那你为什么要打扰erlang:term_to_binary/1
呢?有两个原因:
term_to_binary
比人类可读的术语更快)答案 1 :(得分:2)
是。请注意,每个术语都需要一个尾随点,file:consult
会返回文件中所有以点终止的术语的列表。因此,如果您只有一个术语,代码将如下所示:
ok = file:write_file("myfile", io_lib:format("~p.~n", [Term])),
{ok, [Term]} = file:consult("myfile").