2016-11-14 70 views
1

我正在使用以下程序複製另一個文件。我經常看到源和目標不完全相同(md5sum不同)。下面的代碼有什麼問題嗎?LUA副本問題

local size = 2^13  -- good buffer size (8K) 

local params = {...} 
local srcfile = params[1] 
local outfile = params[1] .. "_copy" 

print (srcfile) 
print (outfile) 


local inf = io.open(srcfile, "r") 
local of = io.open(outfile, "w") 

while true do 
    local block = inf:read(size) 
    print(size) 
    if not block then break end 
     of:write(block) 
end 

inf:close() 
of:close() 

感謝, GL

+0

放棄循環,只使用'of:write(inf:read(「* a」))''。 – lhf

回答

2

您可能需要使用二進制模式,以確保底線的字符不被修改。

local inf = io.open(srcfile, "rb") 
local of = io.open(outfile, "wb") 
+0

謝謝。但問題仍然存在...... – user2148707

+1

您將不得不顯示數據被破壞的示例。在io.open中使用二進制模式對於Windows非常重要,並且在向文件打開模式添加「b」後,您的示例對我來說工作正常。 – Vlad

+0

完全不同的問題。與LUA無關 – user2148707