0

我正在尝试让我的 Lua 程序从我存储在计算机上的文件中读取。我正在使用这段代码:

function readFile(file)
    local file = io.open(file,"rb")
    local content = file:read("*all")
    file:close()
    return content

当我尝试运行它时,我收到此错误:

lua: io.lua:3: attempt to index local 'file' (a nil value)
stack traceback:
    io.lua:3: in main chunk
    [C]: ?
exit code: 1

我找到了原始问题的解决方案,但是当我运行脚本时,它报告变量“常量”为零。

输入:

function readFile(filename)
    local file = io.open(filename,"rb")
    local content = file:read("*a")
    file:close()
    return content
end

readFile("test.txt")
print(content)

输出:

lua -e "io.stdout:setvbuf 'no'" "io.lua" 
nil
Exit code: 0
4

2 回答 2

1

使用与函数参数不同的本地名称。

 function readFile(filename)
 local file = io.open(filename, “rb”)

更新

修改后还是有问题:

readFile("test.txt")
print(content)

您正在打印全局变量content,即nil,您想要的是:

print(readFile("test.txt"))

或者:

local content = readFile("test.txt")
print(content)
于 2013-09-03T23:27:53.433 回答
0

包裹:io.open_assert

local file = assert( io.open(file,"rb") )

这将向您显示底层操作系统生成的错误(如果有)。

于 2013-09-03T23:09:44.813 回答