在 java 中,我习惯于使用内置类来读取和写入属性文件,但 lua 不存在类似的东西。
将名称和值保存到文件然后使用名称取回值的最简单方法是什么?
最简单的方法是这样的:
local name, value = "abc", 123
local f = io.open("outfile", "w")
f:write("return {" .. name .. " = " .. value .. "}")
f:close()
---
local t = dofile("outfile")
print( t[name] )
--> 123
这可行,但不是很安全,因为dofile()
它只是执行它在文件中找到的任何 Lua 代码。如果该文件返回一个完整的表格,其中包含您保存的值,那么它工作得很好,但是有人可以轻松地编辑此文件以包含os.execute("sudo rm -rf /")
或其他令人愉快的乐趣。
setfenv()
明智地使用and可以使其更加健壮debug.sethook()
,但是如果您想正确地做到这一点,您应该使用 Lua 的众多序列化库之一,可以在此处找到其中的一部分。
参考这个例子, https://flicsdb.com/read-properties-file-in-lua/ 它解释了如何读取属性文件并忽略空格或#