我有一个这样的文本文件:
{fruit, [apple,banana,kiwi]}.
{car, [estate,hatchback]}.
{tree, [ebony,pine,ask,birch]}.
{planet, [earth]}.
如何将其读入地图或Erlang中的任何其他数据结构(以进一步迭代每个键及其各自的值)并最终打印地图?
这个对我有用。
-module(test).
-export([start/0, scan_string/1]).
start() ->
{ok, File} = file:open("Newfile.txt",[read]),
{ok, List} = file:read(File,1024 * 1024),
KeyVal = scan_string(List),
F = fun({K,V}, Acc) -> maps:put(K, V, Acc) end,
lists:foldl(F, #{}, KeyVal).
scan_string(TermString) ->
{_, Strings} = lists:foldl(fun break_terms/2, {"", []}, TermString),
Tokens = [T || {ok, T, _} <- lists:map(fun erl_scan:string/1, Strings)],
AbsForms = [A || {ok, A} <- lists:map(fun erl_parse:parse_exprs/1, Tokens)],
[V || {value, V, _} <- lists:map(fun eval_terms/1, AbsForms)].
break_terms($., {String, Lines}) ->
Line = lists:reverse([$. | String]),
{"", [Line | Lines]};
break_terms(Char, {String, Lines}) ->
{[Char | String], Lines}.
eval_terms(Abstract) ->
erl_eval:exprs(Abstract, erl_eval:new_bindings()).
Newfile.txt =
{fruit, [apple,banana,kiwi]}.
{car, [estate,hatchback]}.
{tree, [ebony,pine,ask,birch]}.
{planet, [earth]}.
贝壳=
Eshell V9.3.1 (abort with ^G)
1> c(test).
{ok,test}
2> test:start().
#{car => [estate,hatchback],
fruit => [apple,banana,kiwi],
tree => [ebony,pine,ask,birch]}
3>
$ cat > things.txt
{fruit, [apple,banana,kiwi]}.
{car, [estate,hatchback]}.
{tree, [ebony,pine,ask,birch]}.
{planet, [earth]}.
$ erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3 (abort with ^G)
1> {ok, L} = file:consult("things.txt").
{ok,[{fruit,[apple,banana,kiwi]},
{car,[estate,hatchback]},
{tree,[ebony,pine,ask,birch]},
{planet,[earth]}]}
2> maps:from_list(L).
#{car => [estate,hatchback],
fruit => [apple,banana,kiwi],
planet => [earth],
tree => [ebony,pine,ask,birch]}
我试图通过创建一个函数来编写一个简单的文本文件阅读器,该函数接受文件的路径并将每行文本转换为char数组,但它不起作用。 这里出了什么问题? 从以前的修订版更改了一点代码后,这似乎仍然不起作用,现在它给我一个异常101。 我在Firefox上测试过这个功能,它可以工作,但在Google Chrome上它就是不工作,它一直给我一个异常101。我如何让它不仅适用于Firefox,还适用于其他浏览器(尤
问题内容: 我正在尝试通过创建一个接受文件路径并将文本的每一行转换为char数组的函数来编写一个简单的文本文件阅读器,但是它不起作用。 这是怎么了? 从先前的版本中稍稍更改了代码后,这似乎仍然不起作用,现在给了我一个例外101。 我已经在Firefox上对其进行了测试,并且可以工作,但是在Google Chrome中它却无法工作,并且一直给我一个异常101。如何使它不仅可以在Firefox上而且还
问题内容: 我正在尝试从文本文件中读取UTF8文本,然后将其中一些打印到另一个文件中。我正在使用Linux和gcc编译器。这是我正在使用的代码: 目前,它适用于英文字符。 问题答案: 这段代码对我有用:
问题内容: 我想从文本文件中读取文本。在下面的代码中,发生异常(这意味着它进入了该块)。我将文本文件放在应用程序文件夹中。我应该在哪里放置此文本文件()以便正确阅读? 问题答案: 我假设你的文本文件在SD卡上 //Don’t hardcode “/sdcard” File sdcard = Environment.getExternalStorageDirectory(); //Get the t
问题内容: 我试图将文本文件加载到我的JavaScript文件中,然后从该文件中读取行以获取信息,我尝试使用FileReader,但它似乎无法正常工作。有人可以帮忙吗? 问题答案: 是的,可以使用FileReader,我已经做了一个示例,这是代码: 最后,我只是读了其他一些吸引我的答案,但正如他们所建议的那样,您可能正在寻找使您能够从JavaScript文件所在的服务器(或设备)加载文本文件的代码