一般只使用标准 I/O。 文件 I/O 和系统调用等与外部交互的功能通常由宿主程序实现。
- 包含一个当前输入流(current input stream) 和 当前输出流(current output stream)
- 默认为
stdin和stdout - 使用
io.input(file-name)更改输入流(为文件,且以只读模式打开) - 使用
io.output(file-name)更改输出流(为文件)
- 默认为
- 使用
io.write(a, b, c, ..)向当前输出流打印数据- 和
print的区别print通常用于调试,而且仅支持stdoutprint会自动为参数调用tostring,而io.write强制要求参数为字符串
- 使用
string.format来控制格式
- 和
- 使用
io.read(option)来从当前输入流读取数据option的可能取值有:"a":读取整个文件"l":读取一行,丢弃换行符"L":读取一行,保留换行符"n":读取一个数值,会跳过可能的空格,此时返回值为numbernum:读取num个字符
- 如果读取不到需要的值或已到文件末尾(EOF),返回
nil - 支持可变参数,如
io.read("n", "n")返回两个读取的整数
- 使用
io.lines(size)迭代器来遍历输入的所有行size为可选参数,如果不加则遍历行,加了则遍历size大小的块
- 使用
io.open(filename, option)打开一个文件,返回其句柄f- 如果发生错误,除了返回
nil以外,还会返回错误信息和错误码- 可以用
assert接收错误信息,如assert(io.open(file, "r"))
- 可以用
- 使用
f:read(option)读取数据 - 使用
f:write(..)写入数据
- 如果发生错误,除了返回
- 使用
io.input()(不带参数)获得当前输入流io.read()本质上是io.input():read()
- 使用
io.output()(不带参数)获得当前输出流io.write()本质上是io.output():write()
os.exit(exitcode)以指定返回值终止程序执行os.execute(cmd)用于系统调用