如何在 Lua 中读取一个大文件(一千兆或更多)?

我一直在寻找答案,但每个人的答案都是一行一行地做,但问题是我的文件只有一行字符,尝试使用 io.open("file.txt", "rb"):read("*a") 会导致内存错误。我无法想象如何分段加载它,因为就像我说的,它全部都是一行。

点赞
用户1442917
用户1442917

你可以使用io.read(size)来读取指定大小的缓冲区(这已经在评论中讨论过了)。请参阅《Lua编程》I /O部分结尾的示例

由于你正在对读取的块进行搜索,因此你要考虑到要搜索的字符串可能被分割成不同的块。PiL中谈论读取大文件的另一个例子可能会引起你的兴趣。

2016-08-10 04:25:19
用户2245634
用户2245634

你可以使用表格作为缓冲区:

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
2016-08-20 22:41:35