4

有没有什么技巧可以只用一行代码来破解文件?

("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)。

那么,是否有我缺少的单线解决方案?

4

1 回答 1

2

标准库中没有这样的函数,你可以自己定义:

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

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

于 2014-07-21T21:28:30.547 回答