Erlang,如何创建带有换行符的文本文件?

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

试试这个:

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

我猜您是 运行 您在 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).

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