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() doprint(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 thenprint("Error:", err)
else-- 文件操作file:close()
end
注意事项
- 文件操作完成后必须关闭文件,避免资源泄漏。
- 在写入模式下打开文件会清空原有内容,需谨慎使用。
- 使用
io.lines
可以更简洁地逐行读取文件:
for line in io.lines("test.txt") doprint(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 thenio.close(f)return trueelsereturn falseend
end
通过以上方法,可以灵活地处理文件读写操作,并根据需求选择合适的模式。