终端 I/O

为 CLI 应用程序读取 stdin 和写入 stdout/stderr。

此模块仅在终端上下文中工作。不能在常规函数中使用——只能在 终端主机 上运行的进程中使用。

加载

local io = require("io")

写入 Stdout

将字符串写入 stdout(不带换行符):

local ok, err = io.write("text", "more")
参数 类型 描述
... string 要写入的可变数量字符串

返回: boolean, error

带换行符打印

将值写入 stdout,值之间用制表符分隔,末尾添加换行符:

io.print("value1", "value2", 123)
参数 类型 描述
... any 要打印的可变数量值

返回: boolean, error

写入 Stderr

将值写入 stderr,值之间用制表符分隔,末尾添加换行符:

io.eprint("Error:", message)
参数 类型 描述
... any 要打印的可变数量值

返回: boolean, error

读取字节

从 stdin 读取最多 n 个字节:

local data, err = io.read(1024)
参数 类型 描述
n integer 要读取的字节数(默认:1024,<= 0 的值变为 1024)

返回: string, error

读取一行

从 stdin 读取一行直到换行符:

local line, err = io.readline()

返回: string, error

原始模式

启用或禁用原始终端模式(禁用行缓冲和回显):

local ok, err = io.raw(true)   -- 启用
local ok, err = io.raw(false)  -- 禁用
参数 类型 描述
enable boolean true 启用,false 禁用(默认: true

返回: boolean, error

原始模式使用引用计数 — 每个 io.raw(true) 必须由 io.raw(false) 匹配。进程退出时终端自动重置为正常模式。

刷新输出

刷新 stdout 缓冲区:

local ok, err = io.flush()

返回: boolean, error

命令行参数

获取命令行参数:

local args = io.args()

返回: string[]

错误

条件 类型 可重试
无终端上下文 errors.UNAVAILABLE
写操作失败 errors.INTERNAL
读操作失败 errors.INTERNAL
刷新操作失败 errors.INTERNAL

错误处理请参阅 错误处理