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