Lua(文件I/O)

Lua 文件 I/O 操作

Lua 提供了文件 I/O 操作的多种方法,包括简单模式和完全模式。文件操作通常涉及打开文件、读取内容、写入内容以及关闭文件。

简单模式

简单模式适用于基本的文件操作,通常使用 io.input()io.output() 来设置默认的输入输出文件。

打开文件

file = io.open("test.txt", "r")  -- 以只读方式打开文件

读取文件

content = file:read("*a")  -- 读取整个文件内容
print(content)

写入文件

file = io.open("test.txt", "w")  -- 以写入方式打开文件
file:write("Hello, Lua!")  -- 写入内容
file:close()  -- 关闭文件

关闭文件

file:close()  -- 显式关闭文件

完全模式

完全模式提供了更多的控制,可以直接调用文件对象的方法。

打开文件

file = io.open("test.txt", "r")  -- 以只读方式打开

逐行读取

for line in file:lines() do
    print(line)
end

文件定位

file:seek("set", 0)  -- 将文件指针移动到开头
pos = file:seek()    -- 获取当前文件指针位置
print(pos)

文件打开模式
  • "r":只读模式(默认)。
  • "w":写入模式,覆盖已有文件。
  • "a":追加模式,在文件末尾写入。
  • "r+":读写模式,文件必须存在。
  • "w+":读写模式,覆盖已有文件。
  • "a+":读写模式,在文件末尾追加。
文件读取选项
  • "*n":读取一个数字。
  • "*a":读取整个文件内容。
  • "*l":读取一行(默认)。
  • number:读取指定字节数。
示例:复制文件
local src = io.open("source.txt", "r")
local dst = io.open("destination.txt", "w")

dst:write(src:read("*a"))

src:close()
dst:close()

错误处理

文件操作可能因权限或文件不存在而失败,建议使用 assert 或检查返回值。

local file, err = io.open("nonexistent.txt", "r")
if not file then
    print("Error:", err)
else
    -- 文件操作
    file:close()
end

注意事项

  • 文件操作完成后必须关闭文件,避免资源泄漏。
  • 在写入模式下打开文件会清空原有内容,需谨慎使用。
  • 使用 io.lines 可以更简洁地逐行读取文件:
for line in io.lines("test.txt") do
    print(line)
end

高级文件操作

临时文件

local temp = os.tmpname()  -- 生成临时文件名
local file = io.open(temp, "w")
file:write("Temporary data")
file:close()
os.remove(temp)  -- 删除临时文件

文件属性检查

function file_exists(name)
    local f = io.open(name, "r")
    if f ~= nil then
        io.close(f)
        return true
    else
        return false
    end
end

通过以上方法,可以灵活地处理文件读写操作,并根据需求选择合适的模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值