如何通过lua编辑文件中的特定文本行?

我正在用 Corona SDK 制作一款应用程序,它可以从 SD 卡中读取 .txt 文件,以更清晰的形式呈现数据,然后允许您进行编辑。以下是一些示例文本:

#207 用户首选项 压力日志样品之间时间
207=15
#208 用户首选项 自动打印每个压力日志样品
208=否
#209 用户首选项 自动打印每个事件日志条目
209=否
#210 用户首选项 选择性范围打印
210=1

基本上,我需要能够使用纯 Lua 从文件中获取特定行的文本,对其进行编辑,然后将其放回原地。例如,我可能想要将 208=否 更改为 208=是,而不更改文件中的其他任何内容。

我已经在本网站、谷歌和 Corona 的 API 页面上进行了搜索,但似乎没有找到我要找的东西。难道我必须读取该行之前和之后的所有文件内容并将其合并吗?

原文链接 https://stackoverflow.com/questions/9345164

点赞
stackoverflow用户734069
stackoverflow用户734069

我需要读取到该行之前和该行之后所有的文件内容然后将其拼接吗?

不需要将其拼接起来。只需一路读取文件并存储行,直到达到想要更改的行。进行更改后,读取剩余的整个文件作为一个字符串,然后按顺序写入所有先前读取的行。

代码如下:

local hFile = io.open(..., "r") --读取文件。
local lines = {}
local restOfFile
local lineCt = 1
for line in hFile:lines() do
  if(lineCt == ...) then --这是要修改的行吗?
    lines[#lines + 1] = ModifyLine(line) --将旧的行更改为新的行。
    restOfFile = hFile:read("*a")
    break
  else
    lineCt = lineCt + 1
    lines[#lines + 1] = line
  end
end
hFile:close()

hFile = io.open(..., "w") --写入文件。
for i, line in ipairs(lines) do
  hFile:write(line, "\n")
end
hFile:write(restOfFile)
hFile:close()
2012-02-18 23:56:31