erlang, запись целочисленных значений в файл - PullRequest
3 голосов
/ 12 сентября 2010

Я хочу напечатать целочисленные значения в файл.Я могу записать строковые значения в файл, но когда я пытаюсь записать целочисленное значение, выдается ошибка:

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

Есть предложения?
На самом деле я хочу написать сравнительный код дляВеб-сервер и мне нужно записать все значения времени, а не запросов в выходной файл, а затем я буду использовать его для построения графика с gnuplot.

Ответы [ 3 ]

10 голосов
/ 12 сентября 2010

Используйте integer_to_list/1 для преобразования целых чисел в список для file:write/2.

{ok, F}=file:open("bff.txt", [read,write]), 
Val=integer_to_list(23424), 
file:write(F,Val).
5 голосов
/ 13 сентября 2010

Это потому, что file:write может выводить только строки.Альтернативой является использование функций в модуле io, которые также работают с файлами.Так что io:write(File, Val) будет работать.Вы также можете использовать отформатированные функции io io:format.Это действительно зависит от того, как вы хотите отформатировать данные и как они должны быть прочитаны, просто запись целых чисел с io:write не будет очень полезна, если вы собираетесь их читать.

0 голосов
/ 30 апреля 2013

Вы можете использовать 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"]).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...