Io Lua 5.2:更新系统(需要帮助)

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

我需要在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: "..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")
-- ...