文件系统操作
简介
模块具有64Mb的flash空间,除了模块自身程序占用以外还剩余了一部分空间可供用户使用,AT和LUAT均支持进行操作。
API说明
luat的文件操作来自标准lua的io库直接按照标准语法使用即可,
除了标准语法,luat提供了几个更方便的文件操作接口可以使用。
API接口 | 描述 |
---|---|
io.exists(path) | 判断文件是否存在 |
io.readFile(path) | 读取文件并返回文件的内容 |
io.writeFile(path, content, mode) | 写入文件指定的内容,默认为覆盖二进制模 |
io.pathInfo(path) | 将文件路径分解为table信息 |
io.fileSize(path) | 返回文件大小 |
io.readStream(path, offset, len) | 返回指定位置读取的字符串 |
详细的API介绍见io API章节
实现流程
- 通过rtos.make_dir()接口创建文件目录
- 通过io.writeFile()接口写文件内容
- 通过io.exists()接口判断文件是否存在
- 文件存在的情况通过调用如下接口获取相应内容
io.readFile()读取文件内容
io.fileSize()接口读取文件长度
io.pathInfo()接口读取文件信息
io.readStream()接口读取指定位置字符串
示例
- 创建目录
local USER_DIR_PATH = "/user_dir"
rtos.make_dir(USER_DIR_PATH)
- 写文件内容,文件不存在的情况,会创建文件
io.writeFile(USER_DIR_PATH.."/test.txt","0123456789")
- 判断文件是否存在
io.exists(USER_DIR_PATH.."/test.txt")
- 读取文件内容
local fileval = io.readFile(USER_DIR_PATH.."/test.txt")
- 读取文件长度
local filelen = io.fileSize(USER_DIR_PATH.."/test.txt")
- 读取文件信息
local fileinfo = io.pathInfo(USER_DIR_PATH.."/test.txt")
- 读取指定位置字符串
local fileStr = io.readStream(USER_DIR_PATH.."/test.txt", 3, 5)
常见问题
- 不同的core固件分配的文件系统空间不尽相同,可通过rtos.get_fs_free_size()返回文件系统的剩余空间,单位为字节。
- 为什么读文件失败
- 如果读取的是本地烧录的文件,检查下文件有没有烧录以及完整路径是否正确
- 如果读取的是程序运行过程中动态创建的文件,检查下文件是否创建成功【文件系统空间不足可能会导致文件创建失败】以及完整路径是否正确
- /#lua_user# 目录为什么重刷固件还存在,它是特殊目录吗?
- #lua_user#目录就是一个普通目录,在/目录下,操作方式与其他目录一致,唯一的区别是这个目录模块会保护它,当重新烧录固件时它还存在。