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