[英]Erlang, how can I create text file with newlines?
有人知道如何在Erlang語言的文本文件中添加新行 ? 我想保存這個列表:
Data = ["one", "two", "three"],
使用新行進入文本文件:
one
two
three
我試過了:
write() ->
Data = ["1","2","3"],
Print = string:join(Data, "\n"),
file:write_file("/Documents/foo.txt", [Print]).
但它會創建一個包含內聯數據的文本文件:
one\ntwo\nthree
我猜你在Windows上運行你的代碼,所以你需要"\\r\\n"
作為行分隔符。 您可以通過調用io_lib:nl/0
獲取適合您所在平台的行分隔符。
試試這個:
write() ->
Data = ["1","2","3"],
LineSep = io_lib:nl(),
Print = [string:join(Data, LineSep), LineSep],
file:write_file("/Documents/foo.txt", Print).
這里, Print
是iodata的一個實例,它是一個iolist
或binary
,其中一個iolist
是一個由一個或多個字符,二進制文件或其他iolists組成的任意深度列表。 它是Erlang中輸出的一種非常方便的數據類型,因為它意味着您可以避免在將數據寫入文件或通過套接字發送之前將其展平。 此版本的write
函數使用iodata
形式的Print
變量來輕松確保寫入文件的最后一行數據后面跟一個行分隔符, string:join/2
本身不會這樣做。
試試這個:
write() ->
Data = ["1","2","3"],
Print = string:join(Data, "\n"),
file:write_file("/Documents/foo.txt", Print).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.