很抱歉,如果已经有这样的话题了,但我找不到任何与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
而且我知道它看起来像我第一次发布的代码,但这就是我的意思。
答案 0 :(得分:1)
你能解释一下你在这段代码中想要做什么吗? 为什么需要检查文件是否为零?当您打开文件进行写入时,如果不存在,lua会自动创建它。 “w”模式意味着,您要擦除文件中的所有数据并写入新数据 可能你需要“一种”模式吗?在此模式下,在文件末尾添加新行。
答案 1 :(得分:0)
听起来你对io.open上的旗帜感到困惑。检查手册以确定您真正想要的是w
标志,因为它会覆盖所有内容。
当您在file:write
时,尝试执行if
不应该有效,而且我不确定您为什么会这样做,因为file
是{ {1}}。你说如果文件无法打开,那么尝试将其写入文件,这对我来说没有意义。
答案 2 :(得分:0)
“if”块检查“file”是否为nil,因此代码块永远不会运行。
read()不起作用,因为您以“w”(写入)模式打开文件。
擦除整个文件是写入模式的预期行为。在该模式下,首先擦除文件,然后向其写入新数据。