Lua 文件怎么关闭?

文章导读
Previous Quiz Next Lua 提供了 I/O library 来读取和操作文件。在文件处理完成后,调用 close() 方法是一个好习惯。虽然 Lua 会自动进行内存管理并关闭资源。
📋 目录
  1. 简单模型
  2. 完整模型
  3. 示例 - 简单模型中关闭文件
  4. 示例 - 完整模型中关闭文件
A A

Lua - 关闭文件



Previous
Quiz
Next

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