在Lua中将多行写入文件

时间:2015-02-19 12:15:32

标签: mysql lua lua-table

我尝试在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" ?

2 个答案:

答案 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