Lua怎么检查文件是否可写?

文章导读
Previous Quiz Next 在读取文件之前,始终检查文件是否可写是一个好习惯,然后优雅地处理这种情况。要检查文件是否可写,我们可以检查 io.open() 的状态。
📋 目录
  1. 语法 - io.open()
  2. 示例 - 检查文件不可写
A A

Lua - 检查文件是否可写



Previous
Quiz
Next

在读取文件之前,始终检查文件是否可写是一个好习惯,然后优雅地处理这种情况。要检查文件是否可写,我们可以检查 io.open() 的状态。

语法 - io.open()

f = io.open(filename, [mode])

其中−

  • filename− 要打开的文件的路径,包括文件名。

  • mode− 可选标志,如 r 表示读取,w 表示写入,a 表示追加等。

f 表示由 io.open() 方法返回的文件句柄。如果打开操作成功,f 不为 nil。以下示例展示了检查文件是否可写的用例。

我们对当前目录中的 example.txt 进行检查,该文件在 Lua 程序运行的目录中且可写。

main.lua

-- 检查文件是否可写
function writable(filename)

   local isWritable = true
   -- 以写入模式打开文件
   f = io.open(filename, "w")

   -- 如果文件不可写,f 将为 nil
   if not f then
      isWritable = false
   else
      -- 关闭文件  
      f:close()
   end

   -- 返回状态
   return isWritable
end

-- 检查文件是否可写
if writable("example.txt") then
   print("example.txt is writable.")
else
   print("example.txt is not writable.")
end

输出

运行上述程序时,我们将得到以下输出−

example.txt is writable.

示例 - 检查文件不可写

我们对当前目录中的 example1.txt 进行检查,该文件在 Lua 程序运行的目录中且为只读。

main.lua

-- 检查文件是否可写
function writable(filename)

   local isWritable = true
   -- 以写入模式打开文件
   f = io.open(filename, "w")

   -- 如果文件不可写,f 将为 nil
   if not f then
      isWritable = false
   else
      -- 关闭文件  
      f:close()
   end

   -- 返回状态
   return isWritable
end

-- 检查文件是否不可写
if not writable("example1.txt") then
   print("example1.txt is not writable.")
else
   print("example1.txt is writable.")
end

输出

运行上述程序时,我们将得到以下输出−

example1.txt is not writable.