Lua - 检查文件是否可写
在读取文件之前,始终检查文件是否可写是一个好习惯,然后优雅地处理这种情况。要检查文件是否可写,我们可以检查 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.