Lua 文件 IO
Lua 文件 I/O
I/O 模式
在 Lua 中,文件 I/O 可以通过两种模式进行操作:文本模式和二进制模式。可以使用 io.mode
函数查看当前模式,例如:
print(io.mode(file))
该函数返回文件对象的当前模式,可能的值包括 “r” (读取模式)、“w” (写入模式)、“a” (追加模式)、“rb” (二进制读取)、“wb” (二进制写入)、和 “ab” (二进制追加)。
在打开文件时,可以指定 I/O 模式。例如,打开一个文件以读取文本:
file = io.open("filename.txt", "r")
相应地,打开一个二进制文件:
file = io.open("filename.bin", "rb")
读取文件
要从文件中读取内容,可以使用 file:read
函数。在文本模式下,该函数默认读取一行,并返回该行作为字符串。例如,读取文件中的第一行:
file = io.open("filename.txt", "r")
line = file:read()
print(line)
在二进制模式下,read
函数默认读取 1KB 的数据并返回该数据作为一个字符串。可以通过传递一个数字参数来指定要读取的字节数。例如,读取二进制文件中的前 4 个字节:
file = io.open("filename.bin", "rb")
bytes = file:read(4)
print(bytes)
写入文件
要向文件中写入内容,可以使用 file:write
函数。在文本模式下,该函数会将字符串写入文件。例如,向文件中写入一行:
file = io.open("filename.txt", "w")
file:write("Hello, world!")
在二进制模式下,write
函数会将指定的字节序列写入文件。例如,向文件中写入一个 32 位整数:
file = io.open("filename.bin", "wb")
file:write(string.char(0x12, 0x34, 0x56, 0x78))
关闭文件
在完成文件操作后,应该关闭文件以释放资源。可以使用 file:close
函数来关闭文件。例如,关闭一个文件:
file = io.open("filename.txt", "r")
-- 读取文件内容...
file:close()
异常处理
在文件操作时,可能会出现错误。为了避免程序崩溃,应该对可能出现的异常情况进行适当的处理。可以使用 pcall
函数来捕获任何可能出现的异常。例如,读取一个可能不存在的文件:
local file = io.open("filename.txt", "r")
if not file then
print("Failed to open file!")
else
local ok, line = pcall(file.read, file)
if ok then
print(line)
else
print("Failed to read file!")
end
file:close()
end
在这个示例中,当文件无法打开时,程序会输出 “Failed to open file!"。如果文件能够打开,程序会尝试读取文件。如果读取操作成功,它将输出文件的第一行。否则,它会输出 “Failed to read file!"。无论读取是否成功,程序都会关闭文件以释放资源。