2015-02-17 37 views
2

有人知道如何在文本文件Erlang语言中追加新行? 我想这个列表保存: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 

回答

3

我猜你在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变量的形式来简单地确保写入文件的最后一行数据后面跟着一个行分隔符,这是string:join/2本身不会执行的操作。

+0

非常感谢,这正是我需要的! – 2015-02-19 12:34:02

0

试试这个:

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

此代码的结果将与原始海报的结果相同。 – 2015-02-18 02:22:21

相关问题