简单模式
拥有一个当前输入文件、一个当前输出文件,并提供对文件的操作,适用于简单的文件操作场景。
local file
// 读取文件
file = io.open("test.txt", "r") -- 以只读方式打开文件
io.input(file) -- 设置默认输入文件为 test.txt
print(io.read()) -- 输出文件第一行
io.close(file) -- 关闭打开的文件
// 写入文件
file = io.open("/test.txt","a") -- 以附加的方式打开只写文件
io.output(file) -- 设置默认输出文件为 test.txt
io.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