【发布时间】:2014-11-12 01:43:31
【问题描述】:
我需要打开一个文件,读取该行,做一些事情,删除该行保存,再次打开同一个文件并继续其余的
到目前为止我有这个代码..
1 -module(setup_data).
2 -export([for_each_line_in_file/1]).
3
4 for_each_line_in_file(Name) ->
5 {ok, Device} = file:open(Name, [read]),
6 for_each_line(Device).
7
8 for_each_line(Device) ->
9 case io:get_line(Device, "") of
10 eof -> file:close(Device);
11 Line ->
12 do_something(Line)
13 for_each_line(Device)
14 end.
所以我想要类似的东西
1 -module(setup_data).
2 -export([for_each_line_in_file/1]).
3
4 for_each_line_in_file(Name) ->
4
6 for_each_line(Name).
7
8 for_each_line(Device) ->
9 {ok, Device} = file:open(Name, [read]),
9 case io:get_line(Device, "") of
10 eof -> file:close(Device);
11 Line ->
12 io:format("LINE : ...... ~p~n",[Line]),
23
43 /DELETE THAT CURRENT LINE AND SAVE?
33 file:close(Device)
13 for_each_line(Name)
14 end.
【问题讨论】:
-
您也许应该考虑重写,因为打开和关闭文件的要求很高。也许使用一个读取过程,一个写入过程(并创建一个新文件)?
-
为什么这个问题被标记为 elixir?
-
为什么这个问题被标记为 ejabberd ?
标签: concurrency erlang erlang-otp