【问题标题】:Lua file reading and writing errorLua文件读写错误
【发布时间】:2012-12-07 06:22:14
【问题描述】:

对不起,如果已经有这样的主题,但我找不到任何与 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 句中添加 file:write(hp) 时,它不起作用。另外,如果我在 file:write(hp) 之后添加 file: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

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

【问题讨论】:

    标签: file io lua


    【解决方案1】:

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

    【讨论】:

    • nil on io.open 是一个错误条件。从权限问题到文件描述符用完再到磁盘错误。
    【解决方案2】:

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

    当您在 if 中时尝试执行 file:write 是行不通的,我不确定您为什么会期望它,因为 filenil。您是说如果文件无法打开,则尝试将其写入文件,这对我来说没有意义。

    【讨论】:

    • 谢谢,我在第一篇文章中编辑了正确的代码,根据我提供的信息无法回答。
    • 您编辑的代码将 if existsFile 场景颠倒了。当文件不存在时,您正在读取文件,并在文件存在时写入。另外,我认为您不需要io.close(),因为当您无法打开文件时。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多