作者:DreamFly72 | 来源:互联网 | 2023-05-21 15:38
有人知道如何用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
Steve Vinosk..
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的一个实例,它是an iolist
或a binary
,其中an iolist
是由一个或多个字符,二进制文件或其他iolist组成的任意深列表。这是在Erlang中用于输出的非常方便的数据类型,因为这意味着您可以避免在将数据写入文件或通过套接字发送数据之前将其扁平化。此版本的write
函数使用变量的iodata
形式Print
来轻松确保写入文件的最后一行数据后跟一个行分隔符,而这string:join/2
本身是行不通的。
1> Steve Vinosk..:
我猜您正在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的一个实例,它是an iolist
或a binary
,其中an iolist
是由一个或多个字符,二进制文件或其他iolist组成的任意深列表。这是在Erlang中用于输出的非常方便的数据类型,因为这意味着您可以避免在将数据写入文件或通过套接字发送数据之前将其扁平化。此版本的write
函数使用变量的iodata
形式Print
来轻松确保写入文件的最后一行数据后跟一个行分隔符,而这string:join/2
本身是行不通的。