例如我有一個列表我想保存爲一個文件,它有很多其他的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