【问题标题】:Erlang, how can I create text file with newlines?Erlang,如何使用换行符创建文本文件?
【发布时间】:2015-04-18 19:52:29
【问题描述】:

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

【问题讨论】:

    标签: file erlang newline writefile erl


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,正是我需要的!
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 此代码的结果将与原始海报的结果相同。
    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 2017-05-01
    • 2014-11-07
    • 2020-12-20
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多