例如我有一个列表我想保存为一个文件,它有很多其他的erlang类型。然后我想将它加载回过程中我会用什么? io_lib:format("~P", [Term])
与io:write
然后file:consult
?将erlang值保存到文件并加载它们的过程是什么?
3
A
回答
3
作为替代legoscia的解决方案,你也可以写的erlang:term_to_binary/1
结果到一个文件中,并与erlang:binary_to_term/1
读回。有这种方法的几个注意事项,但:
- 的文件不会是人类可读的(至少不容易)
- 你不能轻松地存储多个方面,因为
erlang:term_to_binary/1
能产生空字符和换行符,这可能会造成解析问题。有几种方法可以解决这个问题:- base64对术语进行编码并以换行符分开
- 将您的术语存储在另一术语中。举例来说,如果你有你想存储三个方面,使用
erlang:term_to_binary({T1, T2, T3})
- 有一个为
term_to_binary
没有派上用场file:consult
相等的,所以你必须明确地读(如二进制),然后运行binary_to_term
那么你为什么要打扰erlang:term_to_binary/1
呢?有两个原因:
- 空间效率(在大多数情况下)
- 解析速度(快解析
term_to_binary
比人类可读的术语)
+1
此外,您可以使用'erlang:term_to_binary/2'并传递[compressed]作为gzip压缩的第二个参数。 –
2
是的。请注意,每个术语需要一个尾部点,并且file:consult
返回文件中所有以点结尾的术语列表。所以,如果你只有一个学期,代码如下所示:
ok = file:write_file("myfile", io_lib:format("~p.~n", [Term])),
{ok, [Term]} = file:consult("myfile").
相关问题
- 1. 如何将变量的值保存到文件并从文件加载它们?
- 2. 在matlab中加载ASCII文件并将它们保存为.mat
- 3. 将图像保存到磁盘并加载它们
- 4. 如何将HashMap保存到文件并加载它
- 5. 动态加载JavaScript文件,并确保它们被缓存
- 6. wget grep sed提取链接并将它们保存到文件
- 7. 读取文件位并保存它们
- 8. 使用xml.load(url)下载xml文件并先下载文件,保存并加载它有什么区别?
- 9. 保存并加载fft到.mat文件
- 10. 加载并保存到txt文件
- 11. 将小文件保存到数据库中,保存它们的最佳方法是什么?
- 12. 将变量保存到文件并下载它
- 13. 从dataGridView获取列值并将它们附加到hosts文件?
- 14. 什么是Erlang hrl文件?
- 15. Android:如何保存EditText转换为Array值并将它们加载回原位
- 16. 尽管excel文件循环做些什么,并将它们保存到新文件夹python pandas
- 17. 将webview内容保存到android存储并加载它
- 18. 加密密码并将它们保存到数据库
- 19. 如何输入值,将它们保存到新文件并搜索文件中的值
- 20. Android:下载图像并将它们保存为缓存
- 21. 将多个文件保存为ZIP而不保存它们并将它们读入
- 22. 将值添加到文件中的数组并保存
- 23. 保存图像的可变数组,并加载它们
- 24. 将OpenId字段保存到数据库 - 它们的类型/长度是什么?
- 25. 如何将HTML userinput保存到txt中。文件并将保存的输入加载到HTML文件中?
- 26. 合并多个csv文件并将它们保存为一个csv文件
- 27. 将UIImage保存到个人文件夹,然后通过UIImage.FromFile加载它
- 28. Android:下载很多文件并将它们保存在SD卡上
- 29. 将QList <Class*>保存并加载到文件
- 30. 将检查项目保存并加载到.ini文件
顺便说一句,这是可能的(甚至是正常的吗?) [写一个反函数到'file:consult/1'](http://zxq9.com/archives/1021)。虽然这不是简单地包含在文件模块中,但有点令人烦恼! – zxq9