Lua的文件I/O操作可以通过两种模式进行:简单模式和完全模式。这两种模式提供了不同级别的灵活性和控制。
简单模式(Simple Model)
简单模式使用io.open
函数打开文件,并设置当前输入文件(io.input
)和当前输出文件(io.output
)。这种模式适合进行简单的文件读写操作。
打开文件
file = io.open("filename.txt", "r") -- 以只读模式打开文件
读取文件
local content = io.read() -- 读取整个文件内容
写入文件
io.output("output.txt") -- 设置当前输出文件
io.write("Hello, World!") -- 写入内容
关闭文件
io.close(file) -- 关闭文件
完全模式(Complete Model)
完全模式提供了更细粒度的控制,允许你直接操作文件句柄。这种模式适合进行复杂的文件操作,如同时处理多个文件。
打开文件
file = io.open("filename.txt", "r") -- 以只读模式打开文件
读取文件
local content = file:read() -- 读取整个文件内容
写入文件
local outputFile = io.open("output.txt", "w") -- 以写入模式打开文件
outputFile:write("Hello, World!") -- 写入内容
outputFile:close() -- 关闭文件
关闭文件
file:close() -- 关闭文件
完整项目示例
假设我们有一个项目,需要读取一个文本文件,处理其中的内容,并将结果写入另一个文件。
文件内容(input.txt)
Line 1
Line 2
Line 3
Lua脚本(process_file.lua)
-- 打开输入文件
local inputFile = io.open("input.txt", "r")
-- 打开输出文件
local outputFile = io.open("output.txt", "w")
-- 读取输入文件的所有内容
local content = inputFile:read("*a") -- "*a" 表示读取整个文件
-- 处理内容(例如,反转每一行)
local lines = {
}
for line in content:gmatch("[^\r\n]+") do
table.insert(lines, line:reverse())
end
-- 将处理后的内容写入输出文件
for i, line in ipairs(lines) do
outputFile:write(line .. "\n")
end
-- 关闭文件
inputFile:close()
outputFile:close()