Erlang,我怎么用换行符创建文本文件?

Val*_*ina 3 erlang newline file writefile erl

有人知道如何用Erlang语言在文本文件中添加新行吗?我要保存此列表:

Data = ["one", "two", "three"],
Run Code Online (Sandbox Code Playgroud)

换成新行的文本文件:

one
two
three
Run Code Online (Sandbox Code Playgroud)

我试过了:

write() ->
    Data = ["1","2","3"],
    Print = string:join(Data, "\n"),
    file:write_file("/Documents/foo.txt", [Print]).
Run Code Online (Sandbox Code Playgroud)

但是它将创建一个带有内联数据的文本文件:

one\ntwo\nthree
Run Code Online (Sandbox Code Playgroud)

Ste*_*ski 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).
Run Code Online (Sandbox Code Playgroud)

此处Printiodata的一个实例,它是an iolist或a binary,其中an iolist是由一个或多个字符,二进制文件或其他iolist组成的任意深列表。这是在Erlang中用于输出的非常方便的数据类型,因为这意味着您可以避免在将数据写入文件或通过套接字发送数据之前将其扁平化。此版本的write函数使用变量的iodata形式Print来轻松确保写入文件的最后一行数据后跟一个行分隔符,而这string:join/2本身是行不通的。