3

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

2 回答 2

6

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

于 2015-02-18T02:21:54.003 回答
0

试试这个:

write() ->
    Data = ["1","2","3"],
    Print = string:join(Data, "\n"),
    file:write_file("/Documents/foo.txt", Print).
于 2015-02-17T23:30:48.853 回答