如何在lua中读取大文件(一个或多个)?

时间:2016-08-10 02:16:24

标签: file memory lua

我一直在寻找答案,每个人的答案总是一行一行,但事情是我的文件只是一行字符,并尝试io.open(& #34; file.txt"," rb"):read(" * a")导致内存错误。我想不出如何一次加载它,因为正如我所说,它是一条巨大的线。

2 个答案:

答案 0 :(得分:2)

您可以使用io.read(size)来读取指定大小的缓冲区(如注释中所述)。请参阅example at the end of the I/O section中的Programming in Lua

由于您在所读取的块中进行搜索,因此您搜索的字符串可能会在不同的块之间进行分割,因此您需要考虑这一点。 Another example from PiL that talks about reading large files可能会引起关注。

答案 1 :(得分:0)

你可以使用table作为缓冲区:

function readFile(file)
local t = {}
 for line in io.lines(file) do
    t[#t + 1] = line .. "\n"
end
  local s = table.concat(t)
  return s
end