我尝试在Lua中为一个文件写多行,但我不知道怎么做。我试过这个:
local category = io.open("/usr/home/game/share/locale/germany/category.txt", "w")
category:write(mysql_query("USE account; SELECT DISTINCT itemshop_categories.category AS a, itemshop_categories.id AS b FROM itemshop INNER JOIN itemshop_categories ON itemshop.category_id = itemshop_categories.id ORDER BY itemshop.category_id ASC;"))
category:close()
mysql_query给了我一个像这样的表
{
{"1_1", "1_2"},
{"2_1", "2_2"},
{"3_1", "3_2"}
}
所以我想把它写到.txt文件中,但它不起作用。 如果我让它工作,我是否能够像这样阅读这个文件:
local category = io.open("/usr/home/game/share/locale/germany/category.txt", "r")
category:read()[2][1]
category:close()
获得" 2_1" ?
答案 0 :(得分:2)
您需要遍历mysql_query
返回的表并手动编写其内容:
for k,v in ipairs(mysql_query("USE account; SELECT DISTINCT itemshop_categories.category AS a, itemshop_categories.id AS b FROM itemshop INNER JOIN itemshop_categories ON itemshop.category_id = itemshop_categories.id ORDER BY itemshop.category_id ASC;")) do
category:write(k,"\t",v,"\n")
end
要读回来,您可以逐行读取文件(可能使用io.lines
),将每行拆分为两个字段,然后根据需要处理字段。
答案 1 :(得分:2)
您无法直接将表写入文件。你必须序列化它。如果你正确地序列化它,那么你可以将文件作为lua代码加载回来以获得相同的表格。
编写一个简单的表序列化器并不复杂。写一个健壮的东西要难得多。幸运的是,lua-users.org wiki上的优秀人员已经编写了许多这样的序列化机制(具有不同的质量和功能支持)。
找一个适合您的目的。 http://lua-users.org/wiki/TableSerialization