停止在标准LUA中的文本文件中编写内容

我想停止在文本文件中编写内容。 我的文本文件有4行,我正在逐行读取文件,所以我得到了:

苹果 橙子 香蕉 可可 苹果 橙子 香蕉 可可 苹果 橙子 香蕉 可可,以此类推,直到我从应用中离开为止。

我只想得到如下输出:

苹果 橙子 香蕉 可可

然后停止,我怎么能做到呢?

我尝试了很多不同的代码,但都没有成功。 我不知道文件有多少行,甚至有多少个文件,因为并不是所有用户都有一个文件,忽略有多少个用户有文件,这是随机的,所以我需要找出有多少个用户有文件,打开每个人的文件,并检查一些我需要的数据,我不能在这里发布。 我解决了这个问题,问题是我得到的巨大文件。

while i <= #g do
   i = i + 1
   fho:write(zline)
   fho:write("\n")
   break
end

我把所有具有文件的用户都输入了一个数组中,并使用数组大小作为循环中的迭代器,但没有任何积极的结果。 我希望到达文件末尾时停止编写。

点赞
用户2858170
用户2858170

以下是一个简单的例子

local lines {"a", "b", "c", "d", "e", "f", "g"}

local file = io.open("test.txt", "a")

if file then

  for i = 1, 4 do
    file:write(lines[i] .. "\n")
  end

  file:close()

end

将此代码保存为.lua文件,可以将数组line中的前四个元素写入名为test.txt的文件中。如果文件不存在,则会自动创建该文件。如果文件无法打开,则不会执行for循环,也不会将任何内容写入文件中。如果文件打开成功,则代码将每个元素写入文件,并在每个元素后添加一个新行字符。最后,使用file:close()命令关闭文件,这是一种很好的习惯,因为这确保文件可以正确地保存和关闭。

2019-08-26 09:33:56
用户4832891
用户4832891

非常感谢大家提出的所有评论和建议。 最终,我获取了文件行数,并将该值保存在名为“d”的变量中,并在以下脚本中使用:

for line in r2:lines() do
    if line ~= "" then
        xline = line:match( "^%s*(.-)%s*$" )
    if i <= d-2 then
        i = i + 1
        r1 = assert(io.open(fPath,"a+"))
        io.input(r1)
        r1:write(xline .."\n")
        r1:close()
    end

    end
end

它起作用了。

此外,我曾使用表格,并打算使用它们的长度(#g)。

for line in r2:lines() do
    if line ~= "" then
        xline = line:match( "^%s*(.-)%s*$" )
        table.insert(xlines,xline)

但出于某种原因,当我通过调试并打印(#g)时,它不停地增加,就像一个计时器一样,不知道为什么它不会停止,当最后一行被读取时。

@Piglet 你是对的,那只是一次不顾一切的尝试,为了实现目标。 注:英语不是我的母语,因此对错误表示歉意。 :) 最好的祝愿。

2019-08-27 11:21:05