Lua - 关闭文件
Lua 提供了 I/O library 来读取和操作文件。在文件处理完成后,调用 close() 方法是一个好习惯。虽然 Lua 会自动进行内存管理并关闭资源。
简单模型
io.close (file)
其中−
file− 文件句柄。
在关闭文件之前,应使用以下语法打开文件:
-- 以指定模式打开由 fileName 指定的文件 file = io.open(fileName, mode) -- 设置默认输入文件 io.input(file)
完整模型
file:close ()
其中−
file− 由 io.open() 返回的文件句柄。
在写入文件之前,应使用以下语法打开文件:
-- 以相应模式打开由 fileName 指定的文件 file = io.open(fileName, mode)
但是,如果我们打开了多个文件且此时垃圾回收器未运行,则可能会遇到以下问题 −
打开的文件可能达到最大数量,直到垃圾回收器自动关闭它们。
某些平台可能不允许写入已打开但未关闭的文件。
如果未调用 close,write() 操作可能无法将数据存储到文件中。
可能发生内存溢出。
示例 - 简单模型中关闭文件
现在让我们先看看如何在简单模型中关闭文件。
main.lua
-- 读取文件内容并返回相同内容
function readFile()
-- 以读取模式打开文件
f = io.open("example.txt","r")
-- 将文件设置为默认输入
io.input(f)
-- 读取第一行
print(io.read())
-- 读取下一行
print(io.read())
-- 关闭文件
io.close()
-- 返回内容
return contents
end
-- 读取文件
readFile()
输出
当上述代码构建并执行时,会产生以下结果 −
Welcome to example.com Simply Easy Learning
示例 - 完整模型中关闭文件
现在让我们先看看如何在完整模型中关闭文件。
main.lua
-- 读取文件内容并返回相同内容
function readFile()
-- 以读取模式打开文件
f = io.open("example.txt","r")
-- 读取第一行
print(f:read())
-- 读取下一行
print(f:read())
-- 关闭文件
f:close()
-- 返回内容
return contents
end
-- 读取文件
readFile()
输出
当上述代码构建并执行时,会产生以下结果 −
Welcome to example.com Simply Easy Learning