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

相关文章

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr