Erlang,如何使用换行符创建文本文件?

时间:2015-02-17 23:11:43

标签: file erlang newline writefile erl

有人知道如何在 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

2 个答案:

答案 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 的一个实例,它是iolistbinary,其中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).