解释:按文件名以读的模式打开一个文件,并且返回一个迭代函数,这个迭代函数每一次被调用都会返回文件中新的一行的内容,直到文件中所有的内容都被读完,常用的代码形式为for line in io.lines(filename) do body end,当迭代函数检测到文件末尾时,它会返回nil来结束循环并自动关闭文件,这个函数还有另一种表现形式,那就是file:lines(),如果我们不加文件名的话,像这样io.lines()的函数等价于io.input():lines()。
Usage##
首先我们新建一个文件,将文件命名为linestest.lua然后编写如下代码:
local contentfunc = io.lines("linestest.txt")
print("contentfunc is :")
print(contentfunc)
print("\nfirst file content is :")
-- 先手动调用一次
local content = contentfunc()
print(content.."\n")
-- 再手动调用一次
local content = contentfunc()
print(content.."\n")
-- 迭代调用
for cnt in contentfunc do
print(cnt)
end
-- 直接全部迭代调用
print("\nsecond file content is :")
for cnt in io.lines("linestest.txt") do
print(cnt)
end
-- 使用文件描述符迭代
print("\nthird file content is :")
local myfile = io.open("linestest.txt");
for cnt in myfile:lines() do
print(cnt)
end
myfile:close()
请发表评论