erlang,将整数值写入文件

时间:2010-09-12 16:56:49

标签: erlang

我想将整数值打印到文件中。我能够将字符串值写入文件,但是当我尝试写一个整数值时,它会给出一个错误:

%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的图形。

3 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:0)

您可以使用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"]).