Io Lua 5.2:更新系统(需要帮助)
我需要在Lua中的文件编辑方面的帮助,因为我只是学会了如何使用它 这是我的密码:Io Lua 5.2:更新系统(需要帮助),io,lua,Io,Lua,我需要在Lua中的文件编辑方面的帮助,因为我只是学会了如何使用它 这是我的密码: local clientFile, serverFile = io.open("client.txt", "r"), io.open("server.txt", "r") local clientVer, serverVer = tostring(clientFile:read()), tostring(serverFile:read()) io.write("\nCurrent Version: "..cli
local clientFile, serverFile = io.open("client.txt", "r"), io.open("server.txt", "r")
local clientVer, serverVer = tostring(clientFile:read()), tostring(serverFile:read())
io.write("\nCurrent Version: "..clientVer.."\nLast Version: "..serverVer.."\n\n")
if clientVer == serverVer then
io.write("No Updates for now.\n\n")
elseif clientVer ~= serverVer then
io.write("Updating...\n\n")
os.remove("client.txt")
local clientFileW = io.open("client.txt", "w+")
clientFileW:write(serverVer)
local clientFileR = io.open("client.txt", "r")
io.write("Client Updated!\n\n")
io.write("Current Version: "..tostring(clientFileR:read()).."\nLast Version: "..serverVer.."\n\n")
end
这是我在客户端服务器中具有相同版本时的输出:
Current Version: v2
Last Version: v2
No Updates for now.
这就是我的输出,当我有一个示例客户端:v1和服务器:v8时
Current Version: v1
Last Version: v8
Updating...
Client Updated!
Current Version: nil
Last Version: v8
为什么我有这个零??这里的问题是输出正在被缓冲(即没有立即写入文件)。此缓冲由完成。下面是代码中发生的情况的演练:
-- ...
-- new, empty file is created
local clientFileW = io.open("client.txt", "w+")
-- server version is stored in an internal buffer, waiting to be written to
-- the file
clientFileW:write(serverVer)
local clientFileR = io.open("client.txt", "r")
-- the empty client.txt is opened
io.write("Client Updated!\n\n")
-- since the client.txt file is empty, nil is returned by clientFileR:read()
io.write("Current Version: "..tostring(clientFileR:read())
.."\nLast Version: "..serverVer.."\n\n")
end
-- end of program execution, flush buffers (e.g. write the new version),
-- close files, etc.
要解决您的程序,您可以在编写新的客户端版本后添加对的调用。这将强制在该点将内部缓冲区写入文件:
-- ...
local clientFileW = io.open("client.txt", "w+")
clientFileW:write(serverVer)
clientFileW:flush()
local clientFileR = io.open("client.txt", "r")
-- ...