本文来源电子发烧友社区,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2282703_1_1.html
Air105使用的是openluat,给我们提供了非常丰富的文件操作功能,今天我们就一次搞清楚基础的文件操作方式。
一、文件系统
openluat上的文件系统,分为如下几种:
注意,luadb下的文件,是只读的。
openluat中的文件操作对象,可以使用内置的Flash,也可以使用SPI Flash,还可以使用SD卡,本文的演示,使用的是内置的Flash。
二、文件操作方式
当前支持的常用文件操作方式,则分为如下几种:
三、io文件操作
io文件操作,是最基础的文件操作方式。
io文件操作的基本指令如下:
1. 打开文件:如果打开失败,则f为空
复制代码
可供使用的标志位如下:
通常使用中:
如果要打开文件读取数据,则标志位使用r或者rb;
如果要打开文件写入数据,则标志位使用w或者wb,注意会清空文件
如果要打开文件追加数据,则标志位使用a或者ab
2. 读取数据:
复制代码
3. 写入数据:
复制代码
注意写入文件的时候,写入的是字符串。而读取的时候,再根据实际情况进行解析。
4. 关闭文件:
复制代码
文件操作部分的实例,可以查看Air105的demo中的fs/Air105/main.lua:
复制代码
四、nvm操作
openluat的nvm操作,实际上是对io操作的一个特殊封装。
通常于存储配置,因为其数据存储必须是一个lua配置文件,样例如下:
复制代码
这样的一个配置文件,是可以在lua脚本中,直接require的。
如果要读取值,则使用nvm.get("a")
如果要设置值,则使用nvm.set('a',1)
需要注意的是,只能操作config.lua中存在的key,否则出错。存在的key,其对应的value也不能为空,否则也会出错。
务必要提醒的是,因为每次修改后,都会整个配置数据一起保存,所以只适合较少配置数据的情况,不适合较多数据的设置读取。数据较多的情况,可以直接使用io文件操作。
nvm的具体操作,可以查看Air105的demo中的nvm/main.lua:
复制代码
需要注意的是,nvm.set(),默认的配置文件config.lua的内容,是不会发生变化的,需要用nvm.get()才能得到最新的值。
其具体处理的实际逻辑,可以查看nvm/nvm.lua了解;其中确保了即使断电,也不会造成配置数据丢失的逻辑。
五、fdb数据操作
openluat的还提供了一个简单的kv操作库fdb,可通过fdb.kv_ge和tfdb.kv_set来进行读写。
如果熟悉memcached或者redis的同学,对这个操作就会比较熟悉。
fdb存储的数据,刷机的时候,也不会丢失,除非主动删除对应的key。
fdb的主要操作指令如下:
复制代码
使用fdb.kv_set的时候,可以写入不同类型的数据,读取的时候,也会保持类型。
需要注意的是,fdb存储的数据,也不能使用空值。但读取不存在的key,则返回空值。
fdb基于flashdb实现的,具体实现逻辑,可以查看:https://gitee.com/openLuat/LuatOS/tree/master/components/flashdb/
fdb的具体操作,可以查看Air105的demo中的fdb/main.lua:
复制代码
总的来说,通常的文件操作,使用io文件操作,配置类的数据,使用nvm操作,而kv数据的存储,可以使用fdb。
例如:
如果需要存储图片等数据,或者读取文件内容进行分析之类的,可以用io文件操作。
如果是可以被用户修改的配置,可以用nvm操作。
如果是一个类似sn之类的数据,则可以考虑使用fdb。
Air105使用的是openluat,给我们提供了非常丰富的文件操作功能,今天我们就一次搞清楚基础的文件操作方式。
一、文件系统
openluat上的文件系统,分为如下几种:

注意,luadb下的文件,是只读的。
openluat中的文件操作对象,可以使用内置的Flash,也可以使用SPI Flash,还可以使用SD卡,本文的演示,使用的是内置的Flash。
二、文件操作方式
当前支持的常用文件操作方式,则分为如下几种:
- io:普通io方式操作文件
- nvm:ini方式操作的lua配置文件
- fdb:kv方式操作数据,刷机也不会清除
三、io文件操作
io文件操作,是最基础的文件操作方式。
io文件操作的基本指令如下:
1. 打开文件:如果打开失败,则f为空
- local f = io.open("/文件名", "标志位")
可供使用的标志位如下:

通常使用中:
如果要打开文件读取数据,则标志位使用r或者rb;
如果要打开文件写入数据,则标志位使用w或者wb,注意会清空文件
如果要打开文件追加数据,则标志位使用a或者ab
2. 读取数据:
- -- 读取首行
3. 写入数据:
- f:write(tostring(data))
注意写入文件的时候,写入的是字符串。而读取的时候,再根据实际情况进行解析。
4. 关闭文件:
- f:close()
文件操作部分的实例,可以查看Air105的demo中的fs/Air105/main.lua:
四、nvm操作
openluat的nvm操作,实际上是对io操作的一个特殊封装。
通常于存储配置,因为其数据存储必须是一个lua配置文件,样例如下:
- --存储默认数据
- --必须return一个table
- return {
- a=1,
- b=2
- }
这样的一个配置文件,是可以在lua脚本中,直接require的。
如果要读取值,则使用nvm.get("a")
如果要设置值,则使用nvm.set('a',1)
需要注意的是,只能操作config.lua中存在的key,否则出错。存在的key,其对应的value也不能为空,否则也会出错。
务必要提醒的是,因为每次修改后,都会整个配置数据一起保存,所以只适合较少配置数据的情况,不适合较多数据的设置读取。数据较多的情况,可以直接使用io文件操作。
nvm的具体操作,可以查看Air105的demo中的nvm/main.lua:
-
-- LuaTools需要PROJECT和VERSION这两个信息
需要注意的是,nvm.set(),默认的配置文件config.lua的内容,是不会发生变化的,需要用nvm.get()才能得到最新的值。
其具体处理的实际逻辑,可以查看nvm/nvm.lua了解;其中确保了即使断电,也不会造成配置数据丢失的逻辑。
五、fdb数据操作
openluat的还提供了一个简单的kv操作库fdb,可通过fdb.kv_ge和tfdb.kv_set来进行读写。
如果熟悉memcached或者redis的同学,对这个操作就会比较熟悉。
fdb存储的数据,刷机的时候,也不会丢失,除非主动删除对应的key。
fdb的主要操作指令如下:
- -- 初始化
使用fdb.kv_set的时候,可以写入不同类型的数据,读取的时候,也会保持类型。
需要注意的是,fdb存储的数据,也不能使用空值。但读取不存在的key,则返回空值。
fdb基于flashdb实现的,具体实现逻辑,可以查看:https://gitee.com/openLuat/LuatOS/tree/master/components/flashdb/
fdb的具体操作,可以查看Air105的demo中的fdb/main.lua:
-
-- LuaTools需要PROJECT和VERSION这两个信息
总的来说,通常的文件操作,使用io文件操作,配置类的数据,使用nvm操作,而kv数据的存储,可以使用fdb。
例如:
如果需要存储图片等数据,或者读取文件内容进行分析之类的,可以用io文件操作。
如果是可以被用户修改的配置,可以用nvm操作。
如果是一个类似sn之类的数据,则可以考虑使用fdb。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
开发板
+关注
关注
25文章
6121浏览量
113145 -
合宙通信
+关注
关注
0文章
148浏览量
2377 -
Air105
+关注
关注
0文章
48浏览量
424
发布评论请先 登录
相关推荐
热点推荐
基于SHA105 CryptoAuthentication™芯片的硬件安全设计指南
用于对称身份验证用例的主机侧,可提供安全密钥存储。该IC还可通过CheckMAC操作验证附件/一次性安全设备上的MAC操作。SHA105身份
实战Air780EPM:构建4G共享网关,服务WiFi与有线设备!
通过Air780EPM开发板,我们可以轻松实现4G网络作为数据出口,为周边的WiFi设备和以太网设备提供互联网共享,适用于移动办公、远程部署等场景。 一、多网融合概述 Air780
烧录工具操作教程:新手也能快速掌握~
烧录工具看似复杂,其实操作很简单!现在就为你奉上清晰明了的使用说明,即使是新手也能迅速掌握。 本文就以 Air780EPM 开发板为例,演示烧录工具的使用步骤。 一、生成量产
Air8101多网融合战略升级:Air780EPM模块助力4G联网落地
应用迈向新高度。 本文将分享Air8101核心板通过外挂Air780EPM整机开发板,实现4G联网的功能示例。 一、硬件准备工作 1
解锁CAN接口开发高效路径!五个核心要点一次讲透
高效开发CAN接口,关键在于把握协议基础、硬件适配、错误管理、性能优化与调试五大核心要点。下面将逐一剖析每个环节的技术细节与实践方法,助力开发者快速突破难点,实现可靠通信。 在
搭载OpenHarmony操作系统,视美泰SC-3568HA开发板免费试用
: 10块 更多热点文章阅读 基于平头哥TH1520芯片,润开鸿HH-SCDAYU800A开发板免费试用 RISC-V开发板深度评测!顶级开发板免费
技术篇——Air8000开发板,一站式满足多功能高扩展开发需求!
朋友们,Air8000开发板“多功能集成+高扩展性”,尤其适合需要通信、控制、数据采集的场景,如:远程监控、智能终端等。 一、开发板主要配置 Air
一篇带你搞定!Air8101:物联网设备AirKiss配网方案
、 Air8101开发板AirKiss配网示例 下文以Air8101开发板为例,演示AirKiss配网实操要点。 此配网方式极为简单,使用示例源码将
Air8101革新物联网配网:AirKiss方案让设备连接更智能!
、 Air8101开发板AirKiss配网示例 下文以Air8101开发板为例,演示AirKiss配网实操要点。 此配网方式极为简单,使用示例源码将
闪电入门!支持CAN和以太网,开发板最新资料看这篇!
.com/air780epm/product/shouce/ 一、CAN接口电路参考设计 Air780EPM开发板及参考设计,采用的是川土微CAN收发器芯片。 川土微CAN收发器芯
合宙Air8000工业引擎:多IO多功能,即将量产
合宙科技近日宣布,其工业引擎Air8000即将进入量产阶段。这款引擎集成了4G、Wi-Fi、BLE、GNSS、Gsensor及电源管理等多项功能,专为工业应用而设计,展现了强大的场景解决能力

【合宙Air105开发板试用体验】在Air105上,一次搞懂openluat的基础文件操作
评论