Lua没有生成函数表(IO API)

时间:2014-06-10 21:21:42

标签: file-io lua lua-table

我正在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。有什么想法吗?

1 个答案:

答案 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")
...

错误消息会告诉您是否有权阅读该文件,或者是否存在其他问题。