2014-10-27 77 views
1

我需要FileEditing幫助在Lua因爲我只是靠在如何給我們吧...的Lua 5.2:更新系統(需要幫助)

這是我的代碼:

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 

爲什麼我有那個零?

回答

2

這裏的問題是輸出被緩衝(即沒有立即寫入文件)。這個緩衝由C library functions which Lua uses for IO完成。以下是在代碼中發生的演練:

-- ... 
    -- 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. 

爲了解決你的程序,你可以寫你的新客戶端版本後添加一個調用:flush()。這將迫使內部緩衝區被寫入該文件:

-- ... 
local clientFileW = io.open("client.txt", "w+") 
clientFileW:write(serverVer) 
clientFileW:flush() 
local clientFileR = io.open("client.txt", "r") 
-- ... 
+0

**謝謝你很多..你幫了我很多!!! ** – JimisDam 2014-10-28 06:54:49