File Lua文件读写错误

File Lua文件读写错误,file,io,lua,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语句中添加file:write(hp)时,它不起作用

抱歉,如果已经有这样的主题,但我找不到任何与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(“*行”),则player.txt中会这样说:

25b[NUL]ÈñZ[NUL]
file = io.open("player.txt","w")
那么我做错了什么?在记事本++中,[NUL]也是带有白色“NUL”文本的黑色块,但不能在此处复制

编辑:Hmmh,似乎整个代码都搞乱了,它总是重写整个文件;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

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

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

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

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


试着做一个
文件:当你在
中时写
,如果
不应该工作,我不知道为什么你会期望它工作,因为
文件
。您的意思是,如果文件无法打开,请尝试将其写入文件,这对我来说毫无意义。

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

试着做一个
文件:当你在
中时写
,如果
不应该工作,我不知道为什么你会期望它工作,因为
文件
。您的意思是,如果文件无法打开,请尝试将其写入文件,这对我来说没有意义。

如果“if”块检查“file”是否为nil,那么代码块将永远不会运行

read()无法工作,因为您以“w”(写入)模式打开了文件

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

如果“if”块检查“file”是否为nil,则代码块将永远不会运行

read()无法工作,因为您以“w”(写入)模式打开了文件


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

nil
在io.open上是一种错误情况。从权限问题到文件描述符用尽,再到磁盘错误,io.open上的
nil
都是错误条件。从权限问题到文件描述符用尽,再到磁盘错误,都有。谢谢,我在第一篇文章中编辑了正确的代码,根据我提供的信息无法回答。如果存在文件,则您编辑的代码具有
。当文件不存在时读取文件,当文件存在时写入文件。另外,我认为您不需要
io.close()
,因为当您无法打开该文件时。谢谢,我在第一篇文章中编辑了正确的代码,根据我提供的信息无法回答。您编辑的代码具有
if existsFile
场景。当文件不存在时读取文件,当文件存在时写入文件。此外,我认为您不需要
io.close()
,因为您无法打开文件。