我正在Lua的一个基础项目上工作。我一直在尝试使用IO
API(定义为here)从文件中获取数据,但是当我打开一个文件并给它一个句柄时,它似乎没有返回一个表功能
(错误的)代码:
local unread = fs.list("email/"..from.."/")
local send = ""
for _,file in ipairs(unread) do
local handle = io.open(file,"r")
local text = handle:read("*a")
send = send .. text .. "\n"
handle.close()
fs.delete(file)
end
你在第一行看到的fs
是围绕IO API的专业文件系统包装器,而不是我的工作,完全没有错误,所以这不是问题。但是,当我尝试读取文件(handle:read()
)时,它会抛出“尝试索引nil”。跟踪它,结果handle
本身就是nil
。有什么想法吗?
答案 0 :(得分:3)
io.open
成功时返回文件句柄,失败时返回错误消息(根据Lua参考手册)。这意味着你应该使用
handle, err = io.open(file, 'r')
if handle == nil then
print('could not open file:', file, ':', err)
return
end
local text = handle:read("*a")
...
错误消息会告诉您是否有权阅读该文件,或者是否存在其他问题。