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