Lua one-liner读取整个文件?

时间:2014-07-21 20:13:30

标签: lua slurp

是否有一个只用一行代码来粘贴文件的技巧?

(“to slup”=将整个文件读入字符串。)

通常我会做以下事情:

local f = io.open("/path/to/file")
local s = f:read("*a")
f:close()

但我想知道是否有更短的路。

我知道我们可以(在Lua 5.2中)做以下事情:

local s = io.lines("/path/to/file", "*a")()

但是文件将保持打开状态一段时间,直到垃圾收集器启动(并取消关闭io.lines返回;我相信这个闭包知道明确关闭文件,但这可能只发生在第二次调用它,当它知道已达到EOF时。)

那么,我缺少一个单线解决方案吗?

1 个答案:

答案 0 :(得分:2)

标准库中没有这样的功能,但您可以自己定义:

local function slurp(path)
    local f = io.open(path)
    local s = f:read("*a")
    f:close()
    return s
end

或者在Penlight中有这样的功能。