【问题标题】:erlang, writing integer values to a fileerlang,将整数值写入文件
【发布时间】:2015-05-21 04:37:34
【问题描述】:

我想将整数值打印到文件中。我可以将字符串值写入文件,但是当我尝试写入整数值时会出错:

%this works fine
{ok, F}=file:open("bff.txt", [read,write]),
Val="howdy",
file:write(F,Val).

%this gets compiled, but results in error {error, badarg} while executing
{ok, F}=file:open("bff.txt", [read,write]),
Val=23424,
file:write(F,Val).

有什么建议吗?
实际上,我想为 Web 服务器编写一个基准测试代码,我需要将所有时间值和请求数写入输出文件,然后我将使用它用 gnuplot 绘制图形。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    使用integer_to_list/1 将整数转换为file:write/2 的列表。

    {ok, F}=file:open("bff.txt", [read,write]), 
    Val=integer_to_list(23424), 
    file:write(F,Val).
    

    【讨论】:

      【解决方案2】:

      这是因为file:write 只能输出字符串。另一种方法是使用io 模块中的函数,这些函数也适用于文件。所以io:write(File, Val) 会起作用。您也可以使用格式化的 io 函数io:format。这实际上取决于您希望如何格式化数据以及如何读取它们,如果您打算读取它们,仅使用 io:write 写入整数不会很有用。

      【讨论】:

        【解决方案3】:

        您可以使用 term_to_binary 和 binary_to_term:

        {ok, F} = file:open("bff.txt", [read,write]),
        Val = [1,2,3,4],
        Data = term_to_binary(Val),
        file:write(F, Data),
        
        {ok, BinaryData} = file:read_file("bff.txt"),
        Val = binary_to_term(BinaryData),
        io:format("~s~w~s", ["Value: ", Val, "\n"]).
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-14
          • 1970-01-01
          相关资源
          最近更新 更多