简单模式
拥有一个当前输入文件、一个当前输出文件,并提供对文件的操作,适用于简单的文件操作场景。
local file// 读取文件file = io.open("test.txt", "r") -- 以只读方式打开文件io.input(file) -- 设置默认输入文件为 test.txtprint(io.read()) -- 输出文件第一行io.close(file) -- 关闭打开的文件// 写入文件file = io.open("/test.txt","a") -- 以附加的方式打开只写文件io.output(file) -- 设置默认输出文件为 test.txtio.write("hello lua") -- 写入数据到文件(缓冲)io.flush() -- 向文件写入缓冲中的所有数据io.close() -- 关闭打开的文件
完全模式
同一时间处理多个文件
local file
// 读取数据
file = io.open("test.txt", "r") -- 以只读方式打开文件
print(file:read()) -- 输出文件第一行
file:close() -- 关闭打开的文件
// 写入数据
file = io.open("test.txt", "a") -- 以附加的方式打开只写文件
file:write("hello lua") -- 在文件最后一行添加数据
file:close() -- 关闭打开的文件
file方法
**file:seek([whence, [offset]])**- 设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息
- 不写参数时,则返回当前位置,file:seek(“set”)则定位到文件头,file:seek(“end”)则定位到文件尾并返回文件大小
- whence
- “set”:从文件头开始
- “cur”:从当前位置开始[默认]
- “end”:从文件尾开始
- offset
- 默认为0
**file:flush()**- 向文件写入缓冲中的所有数据
**io.lines([filename, ...])**- 打开指定的文件filename为读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件
- 不写参数时io.lines() 相当于 io.input():lines(),读取默认输入设备的内容,但结束时不关闭文件
文件打开模式
file = io.open(filename [, mode])
| 模式 | 描述 |
|---|---|
| “r” | 只读方式打开,文件必须存在 |
| “w” | 只写方式打开,文件不存在会新建;存在则会清空其内容 |
| “a” | 追加方式打开,文件不存在会新建,存在则数据追加到末尾 |
| “r+” | 可读可写方式打开,文件必须存在 |
| “w+” | 可读可写方式打开,文件不存在会新建;存在则会清空其内容 |
| “a+” |
模式后面跟一个 “+”表示对文件可读可写io.open("test.txt", "r+")
有时候需要使用二进制模式打开时,模式字符串末尾也可以跟一个”b”。io.open("test.txt", "rb")
io库
io.close([file])io.flush()io.input([file])io.lines ([filename, ···])io.open (filename [, mode])io.output ([file])io.read (···)io.type (obj)io.write (···)
file:close()file:flush()file:lines (···)file:read (···)file:seek ([whence [, offset]])file:write (···)
参考链接
Lua 5.4 Reference Manual - Lua io functions https://www.lua.org/manual/5.4/manual.html#6.8
