1
我有一個程序可以生成長達20米的文本文件。有時候我只關心文件的最後一行,是否有一種方法可以讀取文件的其餘部分,而不用浪費內存來讀取該行?如何在Lua中只讀取文本文件的最後一行?
我有一個程序可以生成長達20米的文本文件。有時候我只關心文件的最後一行,是否有一種方法可以讀取文件的其餘部分,而不用浪費內存來讀取該行?如何在Lua中只讀取文本文件的最後一行?
我可能會誤會,但不訴諸於一些欺騙,似乎你不能。然而,如果你對線的長度有一個粗略的估計,你可以打開一個文件,然後從結尾尋找,比如1Kb。
local f = io.open([[c:\test_file.txt]], "r")
local len = f:seek("end")
f:seek("set", len - 1024)
local text = f:read("*a")
print(string.match(text, "[^%c]*$"))
f:close()
希望這會有所幫助。考慮到該模式需要一些改進。它目前假定沒有控制字符出現在一行上。如果你的行有標籤,那麼它將從那裏捕獲,直到文件結束。
這兩條尋找線可以很容易地組合成一個:f:seek(「end」,-1024) – 2009-01-31 10:39:30