文件系统操作 ============ 作者:闫国梁 最后更新时间:2020年7月6日 ## 文件系统操作 模块具有64Mb的flash空间,除了模块自身程序占用以外还剩余了一部分空间可供用户使用,AT和LUAT均支持进行操作。 ## AT方式 ### 创建一个文件:AT+FSCREATE 语法规则: ======== ============= =========== 命令类型 语法 返回 ======== ============= =========== 设置命令 AT+FSCREATE= OK 或 ERROR 查询命令 AT+FSCREATE=? OK 或 ERROR ======== ============= =========== 参数定义: ==== ====== ==== ======================================== 参数 定义 取值 对取值的说明 ==== ====== ==== ======================================== \ 文件名 字符串型,不用加双引号,不超过 64 个字节 ==== ====== ==== ======================================== 读文件:AT+FSREAD ~~~~~~~~~~~~~~~~~ 语法规则: ======== ============= =========== 命令类型 语法 返回 ======== ============= =========== 设置命令 AT+FSREAD=,,, OK 或 ERROR 查询命令 AT+FSREAD=? OK 或 ERROR ======== ============= =========== 参数定义: +------+--------------------+------+--------------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +======+====================+======+==========================+ | | 文件名 | | 字符串 | | | | | 型,不用加双引号,不超过 | | | | | 64 个字节 | +------+--------------------+------+--------------------------+ | | | 0 | 从文件开头读文件 | +------+--------------------+------+--------------------------+ | | | 1 | 从文件的位置开始读文件 | +------+--------------------+------+--------------------------+ | | 要读取的文件的长度 | | 不能大于 10240 | | | | | 个字节。如果文 | | | | | 件的实际长度小于该值,则 | | | | | 读取的是文件的实际长度。 | +------+--------------------+------+--------------------------+ | | 读文件的起始位置 | | 该取 | | | | | 值应小于文件的大小。当=0 | | | | | 时,该值无效 | +------+--------------------+------+--------------------------+ | | 读取的文件数据 | | | +------+--------------------+------+--------------------------+ 写文件:AT+FSWRITE ~~~~~~~~~~~~~~~~~~ 语法规则: +----------+----------------------------+----------------------------+ | 命令类型 | 语法 | 返回 | +==========+============================+============================+ | 设置命令 | AT+FSWRITE=,, , | > (出现>后写入数据) OK | | | | 或 ERROR 或 TimeOut | +----------+----------------------------+----------------------------+ | 查询命令 | AT+FSWRITE=? | OK 或 ERROR | +----------+----------------------------+----------------------------+ | 注意事项 | 当输入数 | | | | 据的长度达到时,自动写入。 | | | | 或输入数据 | | | | 的时间超过时,返回TimeOut | | +----------+----------------------------+----------------------------+ 参数定义: ==== ================ ==== ======================================== 参数 定义 取值 对取值的说明 ==== ================ ==== ======================================== \ 文件名 字符串型,不用加双引号,不超过 64 个字节 \ 写文件的模式 0 从文件的开头开始写文件 \ 1 从文件的末尾开始写文件 \ 要写的数据的长度 不能大于 10240 个字节 \ 输入持续的时间 单位:秒 ==== ================ ==== ======================================== 获取可用空间大小:AT+FSMEM ~~~~~~~~~~~~~~~~~~~~~~~~~~ 执行命令用来获取文件系统剩余空间大小。 语法规则: ======== ========== =========== 命令类型 语法 返回 ======== ========== =========== 执行命令 AT+FSMEM +FSMEM: OK 查询命令 AT+FSMEM=? OK 或 ERROR ======== ========== =========== 参数定义: ==== ==================== ==== ============ 参数 定义 取值 对取值的说明 ==== ==================== ==== ============ \ 文件系统可用空间大小 单位:字节 ==== ==================== ==== ============ 删除文件:AT+FSDEL ~~~~~~~~~~~~~~~~~~ 语法规则: ======== ========== =========== 命令类型 语法 返回 ======== ========== =========== 设置命令 AT+FSDEL= OK 或 ERROR 查询命令 AT+FSDEL=? OK 或 ERROR ======== ========== =========== 参数定义: ==== ====== ==== ======================================== 参数 定义 取值 对取值的说明 ==== ====== ==== ======================================== \ 文件名 字符串型,不用加双引号,不超过 64 个字节 ==== ====== ==== ======================================== LUAT方式 -------- luat的文件操作来自标准lua的io库直接按照标准语法使用即可。 除了标准语法,luat提供了几个更方便的文件操作接口可以使用。 ### io.exists(path)\ `¶ `__ 判断文件是否存在 - 参数 ========== ==================================== 传入值类型 释义 ========== ==================================== string path,文件全名例如:“/ldata/call.mp3” ========== ==================================== - 返回值 boole,存在为true,不存在为false - 例子 :: local ex = io.exists("/ldata/call.mp3") -------------- io.readFile(path)\ `¶ `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 读取文件并返回文件的内容 - 参数 ========== ==================================== 传入值类型 释义 ========== ==================================== string path,文件全名例如:“/ldata/call.txt” ========== ==================================== - 返回值 string,文件的内容,文件不存在返回nil - 例子 :: local c = io.readFile("/ldata/call.txt") -------------- io.writeFile(path, content, mode)\ `¶ `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 写入文件指定的内容,默认为覆盖二进制模式 - 参数 ========== ==================================== 传入值类型 释义 ========== ==================================== string path,文件全名例如:“/ldata/call.txt” string content,文件内容 string mode,文件写入模式默认“w+b” ========== ==================================== - 返回值 string,文件的内容 - 例子 :: local c = io.writeFile("/ldata/call.txt","test") -------------- io.pathInfo(path)\ `¶ `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 将文件路径分解为table信息 - 参数 ========== ======================================= 传入值类型 释义 ========== ======================================= string path,文件路径全名例如:“/ldata/call.txt” ========== ======================================= - 返回值 table,{dirname=“/ldata/”,filename=“call.txt”,basename=“call”,extname=“.txt”} - 例子 :: loca p = io.pathInfo("/ldata/call.txt") -------------- io.fileSize(path)\ `¶ `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 返回文件大小 - 参数 ========== ============================================== 传入值类型 释义 ========== ============================================== string path,文件路径全名例如:“/ldata/call.txt”,“test” ========== ============================================== - 返回值 number ,文件大小 - 例子 :: locan cnt = io.fileSize("/ldata/call.txt") -------------- io.readStream(path, offset, len)\ `¶ `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 返回指定位置读取的字符串 - 参数 ========== ======================================= 传入值类型 释义 ========== ======================================= string path,文件路径全名例如:“/ldata/call.txt” number offset,要读取的指定位置 number len,要读取的字节数 ========== ======================================= - 返回值 string,返回要读取的数据,读取失败返回nil - 例子 无