当前位置: 首页 > article >正文

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容

ETS表把元组保存在内存里,而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用,用完后还应该正确关闭。如果没有正确关闭,它们就会在下次打开时自动进行修复。因为修复可能会花很长一段时间,所以先正确关闭它们再结束程序是很重要的。

DETS表有着和ETS表不同的共享属性。DETS表在打开时必须赋予一个全局名称。如果两个或更多本地进程用相同的名称和选项打开某个DETS表,它们就会共享这个表。这个表会一直处于打开状态,直到所有进程都关闭它(或者崩溃)。

-module(lib_filenames_dets).
-export([open/1, close/0, filename2index/1, index2filename/1]).
open(File) ->
  io:format ("detsopened:~p~n",[File]),
  Bool = filelib:is_file(File),
  case dets:open_file(?MODULE,[{file, File}]) of
    {ok, ?MODULE} ->
      case Bool of
        true -> void;
        false -> ok = dets:insert(?MODULE, {free, 1})   %%创建新表时插入一个元组
      end,
      true;
    {error, Reason} ->
      io:format("cannot open dets table-n" ),
      exit({eDetsopen, File, Reason})
  end.
close() -> dets:close(?MODULE).

filename2index(FileName) when is_binary(FileName) ->
  io:format("filename2index:~p~n", [FileName]),
  case dets:lookup(?MODULE, FileName) of
    [] ->
      [{_, Free}] = dets:lookup(?MODULE, free),
      ok = dets:insert(?MODULE, [{Free, FileName}, {FileName, Free}, {free, Free+1}]),
      Free;
    [{_, N}] ->
      N
  end.

测试结果

请添加图片描述
能够正常创建file文件夹,但是在调用后面插入函数时总是出现错误
请添加图片描述
原因时在出现错误后文件夹就自动关闭了,需要重新开启文件夹才能读取其中的数据
请添加图片描述


http://www.kler.cn/a/293294.html

相关文章:

  • 前端-同源与跨域
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • vue3+element-plus==> el-form输入响应式失效踩坑!!!!!!!!!!
  • Ubuntu安装MySQL8
  • IEC60870-5-104 协议源码架构详细分析
  • 物理设备命名规则(Linux网络服务器 15)
  • 【2024数模国赛赛题思路公开】国赛C题思路丨附可运行代码丨无偿自提
  • Github 2024-08-31 Rust开源项目日报 Top10
  • 利用数据质量工具提高业务效率 | 数据治理应用篇
  • 修改设置内以及手机桌面的软件icon和名称
  • Qt数字化信息通讯调制解调
  • android kotlin基础复习—for while do...while
  • 利用正则表达式从字符串中提取浮点数
  • 深度学习 --- VGG16能让某个指定的feature map激活值最大化图片的可视化(JupyterNotebook实战)
  • 今麦郎「日记薪·1号发」 即时反馈,激活10000+名基层员工
  • 数学基础 -- 线性代数之矩阵正定性
  • docker构建多系统架构
  • 【hot100篇-python刷题记录】【颜色分类】
  • 黑马点评9——附近商户-GEO数据结构
  • EasyUI textbox 修改字体样式
  • PDF标准详解(四)——图形操作符
  • 数据结构(邓俊辉)学习笔记】排序 3——快速排序:快速划分( LGU 版)
  • 美畅物联丨科技赋能校车安全:智慧监控管理系统的创新应用
  • C语言——回调函数来二次优化计算器
  • 栈和队列(1)
  • 《MaPLe: Multi-modal Prompt Learning》中文校对版