
1最简单的 就是不考虑文本大小,一次性读入,然后正则匹配
local text = [[1 让iolines走到最后然后再读取可以么?
2 或者怎么用find方法找出符合条件的最后一个字符串后面的内容?
3 就是怎么找到正则表达式最后一个匹配到的结果?
]]
local path = [[d:\1txt]]
--[==[
assert(not ioopen(path, "r"), "Temp file already exists !")
-- 写测试文件
local file = ioopen(path, "w+")
file:write(text)
file:close()
--]==]
local file = ioopen(path, "r+");
local text = file:read("all");
local regex = "([^\n]+)$" -- 匹配最后一行,最后一行为空行,则找不到
local regex = "([^\n]+)[\n]$" -- 匹配最后一行有效文本 $表示匹配字符串结尾位置
for line in stringgmatch(text, "([^\n]+)[\n]$") do
print(line)
end
file:close();
2如果文件超大,内存不够一次性读入文件,效率低点可以 按行遍历,找到行,在检查条件等等
考虑效率 应该 利用文件指针,先计算文件大小,然后分析出 读入文件块的大小,比如说 按8K读入,然后从文件尾向前推8K,一次性读入该字块,然后搜索换行符,如果找不到 继续递推读入直到找到换行,如果有换行,就转换成第一步 正则匹配
附录
-- 文件指针 *** 作local cur_pos = file:seek()
file:seek("end")
file:seek("set", pos)
-- 由于单行读取遍历
local file = ioopen(path, "r+");
for line in file:lines() do
last_line = line
end
local file=ioopen("sthtxt")
local line_no=1
for line in file:lines() do
_G['x'line_no]=tonumber(line)
end
以上就是关于lua 怎么读取txt文件最后一行内容全部的内容,包括:lua 怎么读取txt文件最后一行内容、lua 语言如何 读取文本的每一行数字值,把每行得到的数字赋予给x1,x2,x3,x4,x5等、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)