在Lua中将多行写入文件

我尝试用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”?

点赞
用户107090
用户107090

你需要遍历由 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),将每一行分为两个字段,并根据需要处理这些字段。

2015-02-19 13:21:45
用户258523
用户258523

将一个表直接写入文件是不可能的。你需要进行序列化。如果你正确地进行了序列化,那么你可以将文件作为 Lua 代码加载回来,以获得一个完全相同的表。

编写一个简单的表序列化程序并不复杂。编写一个健壮的序列化程序则要困难得多。幸运的是,lua-users.org 维基上的一些优秀的人已经编写了许多这样的序列化机制(其质量和对功能的支持各异)。

找到一个适合你目的的机制。http://lua-users.org/wiki/TableSerialization

2015-02-19 13:22:42