如何在lua中读取大文件(gig或更多)



我一直在寻找这个问题的答案,每个人的答案总是逐行做,但问题是我的文件都只是一行字符,并试图io.open("file.txt", "rb"):read("*a")导致内存错误。我不知道如何一次加载一部分,因为就像我说的,它都是一行。

您可以使用io.read(size)读取指定大小的缓冲区(正如已经在注释中讨论的那样)。参见Lua编程中I/O部分末尾的示例。

由于您正在读取的块中进行搜索,因此您正在搜索的字符串可能会在不同的块之间分割,因此您需要考虑到这一点。另一个来自PiL的关于读取大文件的例子可能会让您感兴趣。

你可以使用table作为buffer:

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

相关内容

  • 没有找到相关文章

最新更新