开发者

erlang, writing integer values to a file

开发者 https://www.devze.com 2023-01-16 07:56 出处:网络
I want to print integer values to a file. I am able to write string values to the file, but when I try to write an integer value it gives an error:

I want to print integer values to a file. I am able to write string values to the file, but when I try to write an integer value it gives an error:

%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).

Any suggestions?

Actually I want to write a benchmarking code for a web server and I need to write all the values of times and no of requests to an output file, and then I'll use it to plot graph with gnuplot.


Use integer_to_list/1 to convert integers to a list for file:write/2.

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


This is because file:write only can output strings. An alternative is to use functions in the io module which also work on files. So io:write(File, Val) will work. You can alternatively use formatted io functions io:format. It really depends how you wish to format the data and how they are to be read, just writing integers with io:write will not be very useful if you intend to read them.


You may use term_to_binary and 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"]).
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号