LuatOS-SOC接口文档(air780E)-- io - io操作(扩展)

2023-10-24 11:01

本文主要是介绍LuatOS-SOC接口文档(air780E)-- io - io操作(扩展),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

示例

-- io模块是lua原生模块,LuatOS增加了一些API
-- 请配合os模块一起使用-- 只读模式, 打开文件
local fd = io.open("/xxx.txt", "rb")
-- 读写默认,打开文件
local fd = io.open("/xxx.txt", "wb")
-- 写入文件,且截断为0字节
local fd = io.open("/xxx.txt", "wb+")
-- 追加模式
local fd = io.open("/xxx.txt", "a")-- 若文件打开成功, fd不为nil,否则就是失败了
-- 注意, 刷机时所添加的文件, 均在 /luadb 目录下, 只读
if fd then-- 读取指定字节数,如果数据不足,就只返回实际长度的数据local data = fd:read(12)-- 按行读取local line = fd:read("*l")-- 全部读取local line = fd:read("*a")-- 数据写入, 仅w或a模式可调用-- 数据需要是字符串, lua的字符串是带长度的,可以包含任何二进制数据fd:write("xxxx") -- 以下是写入0x12, 0x13fd:write(string.char(0x12, 0x13))-- 移动句柄,绝对坐标fd:seek(1024, io.SEEK_SET)-- 移动句柄,相对坐标fd:seek(1024, io.SEEK_CUR)-- 移动句柄,反向绝对坐标,从文件结尾往文件头部算fd:seek(124, io.SEEK_END)-- 执行完操作后,一定要关掉文件fd:close()
end

io.exists(path)

判断文件是否存在

参数

传入值类型

解释

string

文件路径

返回值

返回值类型

解释

bool

存在返回true,否则返回false

例子

log.info("io", "file exists", io.exists("/boottime"))

io.fileSize(path)

获取文件大小

参数

传入值类型

解释

string

文件路径

返回值

返回值类型

解释

int

文件数据,若文件不存在会返回nil

例子

local fsize = io.fileSize("/bootime")
if fsize and fsize > 1024 thenlog.info("io", "file size", fsize)
end

io.readFile(path, mode, offset, len)

读取整个文件,请注意内存消耗

参数

传入值类型

解释

string

文件路径

string

读取模式, 默认 “rb”

int

起始位置,默认0

int

读取长度,默认整个文件

返回值

返回值类型

解释

string

文件数据,若文件不存在会返回nil

例子

local data = io.readFile("/bootime")
-- 注意: offset和len参数是 2023.6.6添加的
-- 读取abc.txt, 先跳过128字节, 然后读取512字节数据
local data = io.readFile("/abc.txt", "rb", 128, 512)

io.writeFile(path, data)

将数据写入文件

参数

传入值类型

解释

string

文件路径

string

数据

返回值

返回值类型

解释

boolean

成功返回true, 否则返回false

例子

io.writeFile("/bootime", "1")

io.fill(buff, offset, len)

读取文件并填充到zbuff内,但不移动指针位置

参数

传入值类型

解释

userdata

zbuff实体

int

写入的位置,默认是0

int

写入的长度,默认是zbuff的len减去offset

返回值

返回值类型

解释

boolean

成功返回true,否则返回false

int

返回实际读取到的长度,如果小于0也说明是读取失败了

例子

local buff = zbuff.create(1024)
local f = io.open("/sd/test.txt")
if f thenf:fill(buff)
end

io.mkfs(path)

格式化文件系统,需指定挂载点

参数

传入值类型

解释

string

挂载点

返回值

返回值类型

解释

bool

成功与否

int

底层返回值

例子

local ret, errio = io.mkfs("/sd")
log.info("fs", "mkfs", ret, errio)

io.mkdir(path)

创建文件夹

参数

传入值类型

解释

string

需要建立的目录路径

返回值

返回值类型

解释

bool

成功与否

int

底层返回值

例子

local ret, errio = io.mkdir("/data/")
log.info("fs", "mkdir", ret, errio)

io.rmdir(path)

删除文件夹

参数

传入值类型

解释

string

需要移除的目录路径

返回值

返回值类型

解释

bool

成功与否

int

底层返回值

例子

local ret, errio = io.rmdir("/data/")
log.info("fs", "rmdir", ret, errio)

io.lsdir(path, len, offset)

列出目录下的文件

参数

传入值类型

解释

string

需要枚举的目录路径

int

最大长度, 默认10, 最高50

int

偏移量, 默认0, 当目录文件很多时分页查询用

返回值

返回值类型

解释

bool

成功与否

int

底层返回值

例子

local ret, data = io.lsdir("/data/", 10, 0)
if ret thenlog.info("fs", "lsdir", json.encode(data))
elselog.info("fs", "lsdir", "fail", ret, data)
end

io.lsmount()#

列出所有挂载点

参数

返回值

返回值类型

解释

table

挂载点列表

例子

local data = io.lsmount()
log.info("fs", "lsmount", json.encode(data))

这篇关于LuatOS-SOC接口文档(air780E)-- io - io操作(扩展)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274703

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

springboot体会BIO(阻塞式IO)

使用springboot体会阻塞式IO 大致的思路为: 创建一个socket服务端,监听socket通道,并打印出socket通道中的内容。 创建两个socket客户端,向socket服务端写入消息。 1.创建服务端 public class RedisServer {public static void main(String[] args) throws IOException {