У меня есть программа, которая генерирует текстовые поля, размер которых может составлять до 20 мегабайт. Иногда мне остается только заботиться о последней строке в файле, есть ли способ прочитать только эту строку, не теряя память, читающую остальную часть файла?Как читать только последнюю строку текстового файла в Lua?
1
A
ответ
3
Я мог ошибаться, но, не прибегая к каким-то обманам, кажется, что вы не можете. Однако, если у вас есть приблизительная оценка длины строк, вы можете открыть файл, а затем искать с конца, скажем, 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: искать («конец», -1024) –
Спасибо, я пропустил это в руководстве. – Ignacio