首页 > 解决方案 > 尝试索引本地“文件”(零值)?

问题描述

我正在电晕模拟器中做一个项目,该项目涉及从项目目录中的 csv 文件(“car.csv”)中读取一些数据,我有这段代码应该读取第一行,但是当我运行它它给了我错误“尝试索引本地'文件'(一个零值)”。知道如何解决这个问题吗?

local function init()
    local path = system.pathForFile( "car.csv", system.DocumentsDirectory );
    local file = io.open(path, "r");
    line = file:read();
    print(line);
end

由于某种原因,它不会将其读入“文件”。

编辑:好的,如果我使用完整路径而不是它的相对文件路径。但是我需要使用相对的,我不知道为什么它不起作用。

标签: luaiocoronasdk

解决方案


使用时io.open,在尝试读取文件之前,您应该始终确保它确实成功,否则您将收到一个丑陋的“尝试索引 nil”错误。

如果您希望您的程序仍然崩溃,只需执行

local file = assert(io.open(path, 'r'))

如果找不到文件,它将为您提供更有用的错误消息。或者,您也可以手动保存返回值io.open并检查错误:

local file, err, code = assert(io.open(path))
if not file then
   print("Error opening file", path, err)
   -- Do something to handle the error
end

推荐阅读