有人知道如何在 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
答案 0 :(得分:5)
我猜你在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
1}}本身不会做。
答案 1 :(得分:0)
试试这个:
write() ->
Data = ["1","2","3"],
Print = string:join(Data, "\n"),
file:write_file("/Documents/foo.txt", Print).