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操作(扩展)
示例 -- io模块是lua原生模块,LuatOS增加了一些API -- 请配合os模块一起使用-- 只读模式, 打开文件 local fd io.open("/xxx.txt", "rb") -- 读写默认,打开文件 local fd io.open("/xxx.txt", "wb") -- 写入文件,且截断为0字节 loc…...
【数据结构】线性表(六)堆栈:顺序栈及其基本操作(初始化、判空、判满、入栈、出栈、存取栈顶元素、清空栈)
文章目录 一、堆栈1. 定义2. 基本操作 二、顺序栈0. 顺序表1. 头文件和常量2. 栈结构体3. 栈的初始化4. 判断栈是否为空5. 判断栈是否已满6. 入栈7. 出栈8. 查看栈顶元素9. 清空栈10. 主函数11. 代码整合 堆栈Stack 和 队列Queue是两种非常重要的数据结构,两者都是特…...
父组件可以监听到子组件的生命周期吗?
在 Vue 中,父组件是可以监听到子组件的生命周期的。Vue 提供了一些特殊的钩子函数,可以在父组件中监听子组件的生命周期事件。 以下是一些常用的方法来监听子组件的生命周期: 1:使用$emit: 在子组件的生命周期钩子函数中,使用 $emit 方法触发自定义事件,向父组件发送通…...
[开源]MIT开源协议,基于Vue3.x可视化拖拽编辑,页面生成工具
一、开源项目简介 AS-Editor 基于 Vue3.x 可视化拖拽编辑,页面生成工具。提升前端开发效率,可集成至移动端项目作为通过定义 JSON 直接生成 UI 界面。 二、开源协议 使用MIT开源协议 三、界面展示 四、功能概述 基于Vue可视化拖拽编辑,…...
【C++ Primer Plus学习记录】数组的替代品
目录 1.模板类vector 2.模板类array(C11) 3.比较数组、vector对象和array对象 模板类vector和array是数组的替代品。 1.模板类vector 模板类vector类似于string类,也是一种动态数组。您可以在运行阶段设置vector对象的长度,可…...
JSP免杀马
JSP免杀马 随着Java框架的进化和程序员的内卷,使用PHP编写的系统越来少,使用Java编写的系统越来越多。JSP马的使用越来越多,但是就目前来看,各大厂商对JSP马的查杀效果还是不尽人意。这里简单通过Java的反射机制和ClassLoader技术…...
2023-10-16 node.js-调用python-记录
NodeJS 作为后端,仅在需要时调用 Python 在某些特殊的场景下,比如复杂耗时的数据处理和运算时,我们可以用 Python 脚本编写,然后使用 Node 的子进程调用 Python 脚本即可,这样可以提升效率。如下代码,我们…...
Kotlin 设置和获取协程名称
1,设置写成名称 创建协程作用域是或者创建协程是有个上下文参数(context: CoroutineContext) 创建协程作用域 CoroutineScope(Dispatchers.IO CoroutineName("协程A"))//Dispatchers.IO根据实际情况设置可有可无 源码…...
awk命令的使用
1.概念: awk是Linux以及UNIX环境中现有的功能最强大的数据处理工具 awk是一种处理文本数据的编程语言。awk的设计使得它非常适合于处理由行和列组成的文本数据 awk程序可以读取文本文件,对数据进行排序,对其中的数值执行计算以及生成报表等…...
【面试系列】Vue
引言:下面是一些常见的 Vue 面试题和对应的答案 目录 1. Vue 是什么?它有哪些特点?2. Vue 的生命周期有哪些?请简要描述每个生命周期的作用。3. Vue 组件间通信的有哪些方式?4. Vue 的 computed 和 watch 的区别是什么…...
揭开MyBatis的神秘面纱:掌握动态代理在底层实现中的精髓
一日小区漫步,我问朋友:Mybatis中声明一个interface接口,没有编写任何实现类,Mybatis就能返回接口实例,并调用接口方法返回数据库数据,你知道为什么不? 朋友很是诧异:是啊ÿ…...
结合领域驱动设计,理解TOGAF之架构方法论
TOGAF(The Open Group Architecture Framework)是一个开放的架构方法论,旨在支持组织制定和实施企业架构。它提供了一种框架来创建和管理企业架构,并包含了一组最佳实践,帮助组织实现其业务目标。 TOGAF框架包括四个主…...
Vue-vue项目Element-UI 表单组件内容要求判断
整体添加判断 <el-formref"ruleFormRef":model"formModel"class"demo-ruleForm"label-position"top"status-icon:rules"rules"><el-form-item label"姓名" prop"applyUsers" class"form-…...
【试题027】C语言宏定义小例题
1.题目: #define MOD(a,b) a%b int main() { int x4,y16,z; zMOD(y,x); printf("%dn".z);} 则程序执行的结果是? 2.代码分析: #include <stdio.h> #define MOD(a,b) a%b int main() {int x 4, y 16, z;z MOD(y, …...
解决 sharp: Installation error: unable to verify the first certificate
使用 plasmo 时报错如下: E:\chromeplugins>pnpm create plasmo ../.pnpm-store/v3/tmp/dlx-46852 | 2 ../.pnpm-store/v3/tmp/dlx-46852 | Progress: resolved 2, reused 2, downloaded 0, added 2, done 🟣 Plasmo v0.83.0 &…...
【Java】Java实现100万+ 的高并发、高性能设计
Java实现100万 的高并发、高性能设计 1、简述 现百万级并发编是一项综合性的技术,同时,它与现实生活中 的场景有着紧密的联系。 搞懂并发编程有三大核心问题 分工问题 同步问题 互斥问题 本文就对这三大核心问题进行简单的介绍 2、分工问题 关于分工…...
linux系统下,在vscode的命令行中调试python文件
首先参考vscode官网文档Command line debugging 步骤 1(只需一次):安装debugpy 步骤 2:在命令行中运行 python -m debugpy --listen 5678 --wait-for-client -m dir1.dir2.your_script 以上命令使用了端口5678,也可…...
DFS(分布式文件系统)与 DFSR(分布式文件系统复制)的区别
DFS(分布式文件系统)和 DFSR(分布式文件系统复制)是两种不同的技术,尽管它们在名称上有一些相似之处,但它们的用途和功能有所不同。 DFS(分布式文件系统) DFS 是一种用于创建和管理…...
丈母娘说:有编制的不如搞编程的
10月17日百度世界大会召开,据说文心大模型又牛X了,综合水平相比GPT4毫不逊色,真是个让人激动的消息,国产大模型的进展可以说是日新月异,我这耳朵边一直响彻四个字:遥遥领先。 不过今天我关注的重点不是什么…...
vue 部署后 405 not allowed
关于部署vue项目dist包,在nginx配置遇到的坑: 1.vue项目中vue.config.js的配置:devServer.proxy 可以是一个指向开发环境 API 服务器的字符串: evServer: {proxy: {/prod-api: {target: http://192.168.0.68:38090;,changeOrigi…...
别再问Markdown怎么合并单元格了,用这3个HTML属性5分钟搞定
突破Markdown表格限制:HTML合并单元格实战指南 在技术文档写作、知识管理工具(如Obsidian、Typora、Notion)或静态博客(如Hugo、Jekyll)中,Markdown因其简洁高效的特性成为首选格式。然而,当我…...
如何用WeChatMsg守护你的数字记忆:从聊天记录到个人AI数据中心的蜕变
如何用WeChatMsg守护你的数字记忆:从聊天记录到个人AI数据中心的蜕变 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...
League Akari:英雄联盟玩家的终极智能助手,彻底告别低效操作
League Akari:英雄联盟玩家的终极智能助手,彻底告别低效操作 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄…...
Spring AI 1.0.6、1.1.5、2.0.0-M5 发布,带来改进、修复与安全更新!
2026 年 4 月 27 日,Spring AI 1.0.6、1.1.5、2.0.0 - M5 版本正式发布,带来重要改进、稳定性增强、错误修复、文档更新及安全修复。 Spring AI 1.0.6:维护与升级 此为维护版本,包含 1 个依赖项升级和 1 个构建修复。Spring Boo…...
JKW系列无功补偿控制器源程序功能说明
量产无功补偿控制器程序,JKW系列无功补偿控制器源程序提供参考电路,仅供参考。1. 系统概述 JKW系列无功补偿控制器是一款基于ATmega16微控制器的电力系统无功补偿设备,主要用于监测电网参数并自动控制电容器的投切,以提高功率因数…...
5大核心功能解析:BongoCat如何成为你的终极跨平台桌面伴侣?
5大核心功能解析:BongoCat如何成为你的终极跨平台桌面伴侣? 【免费下载链接】BongoCat 🐱 跨平台互动桌宠 BongoCat,为桌面增添乐趣! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 厌倦了单调的电脑…...
RAG(三)检索(2)向量检索
一、通用步骤1、切片2、生成 embedding把每个 chunk 送入 embedding 模型,得到向量。query 的向量和文档向量必须来自同一个模型维度必须一致"用户输入账号密码后进行验证码校验" -> [0.12, -0.33, 0.91, ...]3、保存 chunk 元数据每个 chunk 不只是存…...
【Matlab代码】基于Stackelberg博弈的光伏用户群优化定价模型(完美复现)
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
专业指南:如何利用JPlag代码查重工具高效检测学术抄袭与代码复用
专业指南:如何利用JPlag代码查重工具高效检测学术抄袭与代码复用 【免费下载链接】JPlag State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs. 项目地址: https://gitcode.com/gh_mirrors/jp/JPlag …...
别再死磕GPIO了!用STM32的PWM+DMA驱动WS2812灯带,CPU占用率直降90%
STM32实战:PWMDMA驱动WS2812灯带的极致性能优化 在智能家居和物联网设备开发中,绚丽的灯光效果往往能大幅提升产品体验。但当你用STM32的GPIO模拟时序驱动WS2812灯带时,是否遇到过这些困扰:CPU占用率飙升导致传感器数据采集延迟、…...
