2015-02-17 63 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

相關問題