2015-02-12 99 views
1

我使用LUA讀取文件中的數據,並且該代碼如下所示,的Lua:讀取文件

filename = "./temp/vtx_vel"..id..".dat" 
    file = io.open(filename, "r") 
    lineno = i + ni*j 
    local n = -1 
    for l in io.lines(filename) do 
     n = n + 1 
     if n == lineno then 
      vel = tonumber(l) 
      break 
     end 
    end 
    file:close() 

在外部文件中的數據正在改變。但是,當我在不同的步驟閱讀這個文件時,我感到很奇怪,我得到了相同的值。這是爲什麼?

謝謝。

+0

您沒有從您打開的文件句柄讀取。您正在'io.lines'調用中打開一個新句柄,並且從不關閉它們。在循環中使用'file:lines()',看看問題是否消失。 – 2015-02-12 03:35:55

+0

謝謝你,我已經改變爲「在file.lines()做l」,但得到錯誤:udf-vtx.lua:35:糟糕的參數#1到'行'(文件*預期,沒有價值) – Kan 2015-02-12 03:39:52

+0

'file:lines()'不是'file.lines()'。您需要將其稱爲文件的「方法」(隱式地將'file'作爲函數的第一個參數傳遞)。 – 2015-02-12 03:40:38

回答

0

閱讀從我的經驗,一個文件的最佳方法是隻做到這一點:

local f = io.open(--your file here) 
local output = {} 
for each in f:lines() do 
    output[#output+1] = each 
end 

你的文件將被讀入表output。 有其他需要注意的地方,除非你定義了一個模式,io.open()默認在「r」或讀模式下打開一個文件。