我想将整数值打印到文件中。我能够将字符串值写入文件,但是当我尝试写一个整数值时,它会给出一个错误:
%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的图形。
答案 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"]).