file - Lua中如何只读取文本文件的最后一行?

标签 file lua io

我有一个程序可以生成最大 20 米的文本字段。有时我只关心文件中的最后一行,有没有办法只读取该行而不浪费内存读取文件的其余部分?

最佳答案

我可能会弄错,但如果不采取一些诡计,看来你不能。 但是,如果您粗略估计了行的长度,则可以打开一个文件,然后从末尾开始查找,例如 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()

希望这有帮助。考虑到该模式需要一些改进。目前它假设一行中没有出现控制字符。如果您的行有制表符,那么它将从那里捕获直到文件末尾。

关于file - Lua中如何只读取文本文件的最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497311/

相关文章:

variables - 脚本试图创建全局变量

java - ByteArrayInputStream 到 ObjectInputStream 消失了

lua - 我如何在 lua 中 tail -F 一个日志文件(截断感知)?

windows - SWI-Prolog 写入文件

c++ - 带有 gmp 的代码块,带有 << 运算符和 mp*_class 的段错误

python - 使用 Python 在文件夹中查找最新文件版本

java - DafaultTableModel 从文件读取到 setValueAt(value, row, col) Java

Java解析具有不同工作目录的文件路径

java - 为什么我要序列化一个对象而不是做一个文件输出?

lua - 常规 Lua 解释器与 LuaJIT 解释器?