Lua io.lines()是流式传输还是slurp文件?

Lua io.lines()是流式传输还是slurp文件?,lua,Lua,对于支持逐行处理的算法,lua文档建议在while循环中使用io.lines()比io:read(“*line”)更有效 调用io.read(“*行”)返回当前输入的下一行 文件,不带换行符。(…)但是,要在 一行一行地处理整个文件,我们最好使用io.lines迭代器。() 我可以想象出io.lines()调用被首选的三个可能原因 迭代器比while循环更有效 文件读取的处理效率更高 更容易阅读/维护代码 lua文档还提升了slurping文件 (y)OU应始终考虑读取整个文件的替代方案 使用i

对于支持逐行处理的算法,lua文档建议在while循环中使用
io.lines()
io:read(“*line”)
更有效

调用io.read(“*行”)返回当前输入的下一行 文件,不带换行符。(…)但是,要在 一行一行地处理整个文件,我们最好使用io.lines迭代器。()

我可以想象出
io.lines()
调用被首选的三个可能原因

  • 迭代器比while循环更有效
  • 文件读取的处理效率更高
  • 更容易阅读/维护代码
  • lua文档还提升了slurping文件

    (y)OU应始终考虑读取整个文件的替代方案 使用io.read中的选项“*all”,然后使用gfind将其拆分()

    假设
    io:read(“*行”)
    对文件进行流式处理。如果lua中的slurping更有效,并且
    io.lines()
    slurps文件,那么
    io.lines()
    可能因此更有效

    但是,关于
    io.lines()

    请注意,它是一个迭代器,这不会带来 最初将整个文件保存到内存中

    这意味着流媒体而不是口吃


    TLDR是否
    io.lines()
    将整个文件保存在内存中,还是一次只保存一行?它的内存使用是否与while循环中的
    io:read(“*line”)
    不同?

    io.lines()
    不会将整个文件保存在内存中:它一次读取一行文件,而不是一次读取整个文件。为此,请使用
    io.read(“*all”)

    来澄清,io.lines是否将整个文件保存在内存中?我知道我一次只能访问一行,但它的内存使用情况与while循环中的io:read(“*行”)不同吗?