0

我正在创建一个 ets;

ets:new(myets,[duplicate_bag,public,named_table]). 

我正在输入以下格式的数据:

{120869,message,item1,item2,status1,success}
{120869,message,item1,item2,status1,fail}
{120869,action,message,{oldsetting,40},{newsetting,50}}
{93195,model_status}

我想将这些中的每一个保存为文本文件中的单独行。我正在尝试以下方式:

Data = ets:tab2list(myets)

这给出了:

[{120869,message,item1,item2,status1,success},
{120869,message,item1,item2,status1,fail},
{120869,action,message,
 {oldsetting,40},
 {newsetting,50}},
{93195,model_status}]

然后我io:format用来保存到文件。

但是,我想知道是否有一种简单的方法可以保存myets到文本文件而不在第三个元组中放置换行符(嵌套元组以oldsettingand开头newsetting)?

4

2 回答 2

1

如果文件中有文件设备,则只需执行:

[io:format(File, "~p\n", [I]) || I <- Data].

但是如果你想存储非常大的表,这种方式内存效率不高。

为什么要存储这些数据?也许最好只使用dets?

于 2012-12-24T10:00:44.730 回答
1

好吧,一个简单的打印功能应该可以解决问题:

print_list(List, File) ->
   lists:foreach(fun(X) -> io:write(File, X), io:nl(File) end, List).

但是,如果您只想保存可以使用的 ets 表to_dets/2(并使用 打开它from_dets/2)。

于 2012-12-19T11:28:13.697 回答