Lua中的文件转成数组

我想知道如何在一些函数中通过lua将一行读入数组中。

例如:FileToArray(“C:/file.txt”)?

我知道我可以使用:

var = io.open("file")

Data = var:read()

但这只会返回第一行,没有其他行。

有谁知道如何解决这个问题或者有其他方法吗?我对于lua和文件系统还很陌生。

点赞
用户438753
用户438753
local file = io.open("c:\\file.txt")   -- 打开指定文件并返回文件句柄
local tbllines = {}     -- 声明一个空表格
local i = 0   -- 用于记录行数的变量初始化为0
if file then   -- 当文件能成功打开
    for line in file:lines() do   -- 遍历每一行内容
     i = i + 1   -- 行数加1
     tbllines[i] = line     -- 将每一行的内容存入表格中
    end
    file:close()   -- 关闭文件
else
    error('file not found')   -- 文件未找到,抛出错误
end

参考:http://lua-users.org/wiki/IoLibraryTutorial

2012-10-12 10:06:03
用户1303277
用户1303277

你可以传递 "*a" 给 read 函数,它将读取整个文件:

local file = io.open("file-name", "r");
local data = file:read("*a")

如果你想要将每行存储在一个数组中。和 Jane 的解决方法一样,你可以使用 io:lines() - 它返回迭代器函数(每次调用都会给你一行新的行)

local file = io.open("file-name", "r");
local arr = {}
for line in file:lines() do
    table.insert (arr, line);
end
2012-10-12 11:47:36