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用の多数のシリアル化ライブラリの1つを使用する必要があります。その選択は、ここにあります。
この例を参照して ください https://flicsdb.com/read-properties-file-in-lua/ プロパティファイルを読み取り、空白または #