Как прочитать только последнюю строку текстового файла в Lua? - PullRequest
1 голос
/ 31 января 2009

У меня есть программа, которая генерирует текстовые поля размером до 20 метров. Иногда меня волнует только последняя строка в файле, есть ли способ прочитать только эту строку, не тратя впустую память на чтение остальной части файла?

1 Ответ

3 голосов
/ 31 января 2009

Я могу ошибаться, но, не прибегая к каким-то хитростям, кажется, что вы не можете. Однако, если у вас есть приблизительная оценка длины строк, вы можете открыть файл и затем искать с конца, скажем, 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()

Надеюсь, это поможет. Примите во внимание, что шаблон нуждается в доработке. В настоящее время предполагается, что в строке отсутствуют управляющие символы. Если ваша строка имеет, например, вкладки, она будет записываться оттуда до конца файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...