简单模式

拥有一个当前输入文件、一个当前输出文件,并提供对文件的操作,适用于简单的文件操作场景。

  1. local file
  2. // 读取文件
  3. file = io.open("test.txt", "r") -- 以只读方式打开文件
  4. io.input(file) -- 设置默认输入文件为 test.txt
  5. print(io.read()) -- 输出文件第一行
  6. io.close(file) -- 关闭打开的文件
  7. // 写入文件
  8. file = io.open("/test.txt","a") -- 以附加的方式打开只写文件
  9. io.output(file) -- 设置默认输出文件为 test.txt
  10. io.write("hello lua") -- 写入数据到文件(缓冲)
  11. io.flush() -- 向文件写入缓冲中的所有数据
  12. 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