Lua文件读写错误

时间:2011-05-15 08:51:03

标签: file io lua

很抱歉,如果已经有这样的话题了,但我找不到任何与Lua有关的东西......所以我在编写和阅读文件时基本上遇到了一些问题,这就是我所做的:

hp = 25

file = io.open("player.txt","w")
if file==nil then
    io.output("player.txt")
    io.close()
end
file:write(hp)
file:close()

它似乎工作正常,它只是完美......但是当我试图添加文件:在if语句中写入(hp)时,它不起作用。另外如果我在文件:write(hp)之后添加文件:read(“* line”),这就是它在player.txt中所说的内容:

25b[NUL]ÈñZ[NUL]
file = io.open("player.txt","w")

那么我做错了什么?另外[NUL]是黑色块,在记事本++中有白色“NUL”文本,但不能在这里复制。

编辑:嗯,似乎整个代码都搞砸了,它总是重写整个文件; o

Edit2 :实际上我不知道我在说什么,现在我可以更好地理解文件控制了,这是我应该做的或者我试图做的事情:

function existsFile(path)
    x = io.open(path)
    if x == nil then
        io.close()
        return false
    else
        x:close()
        return true
    end
end

if not existsFile("player.txt") then
    file = io.open("player.txt", "w")
    file:write(25)
    hp = 25
    file:close()
else
    file = io.open("player.txt", "r")
    hp = file:read("*number")
    file:close()
end

而且我知道它看起来像我第一次发布的代码,但这就是我的意思。

3 个答案:

答案 0 :(得分:1)

你能解释一下你在这段代码中想要做什么吗? 为什么需要检查文件是否为零?当您打开文件进行写入时,如果不存在,lua会自动创建它。 “w”模式意味着,您要擦除文件中的所有数据并写入新数据 可能你需要“一种”模式吗?在此模式下,在文件末尾添加新行。

答案 1 :(得分:0)

听起来你对io.open上的旗帜感到困惑。检查手册以确定您真正想要的是w标志,因为它会覆盖所有内容。

当您在file:write时,尝试执行if不应该有效,而且我不确定您为什么会这样做,因为file是{ {1}}。你说如果文件无法打开,那么尝试将其写入文件,这对我来说没有意义。

答案 2 :(得分:0)

“if”块检查“file”是否为nil,因此代码块永远不会运行。

read()不起作用,因为您以“w”(写入)模式打开文件。

擦除整个文件是写入模式的预期行为。在该模式下,首先擦除文件,然后向其写入新数据。