在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()
和debug.sethook()
可以使这更加强大,但是如果你想要正确地使用它,你应该使用Lua的许多序列化库中的一个,其中一个可以找到here。
请参阅此示例,https://flicsdb.com/read-properties-file-in-lua/它解释了如何读取属性文件并忽略空格或#