【发布时间】:2014-07-31 19:26:39
【问题描述】:
我正在使用 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。有什么想法吗?
【问题讨论】:
-
试试
print( file )看看它是只是文件名还是文件的整个路径。 -
因为@hjpotter92 表明
file是否是有效路径,那么handle应该是非零假设您有权读取文件。如果路径不正确或不完整(例如,相对于fs.list调用中给出的路径),那么您需要修复fs库或构建正确的绝对或相对路径,然后再尝试打开文件。跨度> -
@hjpotter92 喜欢这个想法,我会看看它。我以为我有正确的道路,但没有意识到如果我做错了它会搞砸这么多。