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

时间:2012-02-18 23:30:24

标签: android lua corona

我在Corona SDK中制作了一个应用程序,该应用程序从SD卡读取.txt文件,以更清晰的形式显示数据,然后允许您编辑它。 一些示例文本:

#207 USER PREFERENCES Time Between Pressure Log Samples
207=15
#208 USER PREFERENCES Auto Print Each Pressure Log Sample
208=No
#209 USER PREFERENCES Auto Print Each Event Log Entry
209=No
#210 USER PREFERENCES Selective Range Printing
210=1

基本上我需要能够从文件中获取特定的文本行,编辑它,并使用纯Lua将其重新放回原位。例如,我可能希望将208=No更改为208=Yes而不更改文件中的任何其他内容。

我已经搜索了这个网站,Google和Corona的API页面,但似乎没有任何东西可以找到我想要的东西。我是否必须阅读该行的所有文件并在该行之后并将其连接起来?

1 个答案:

答案 0 :(得分:1)

  

我是否必须阅读该行的所有文件并在该行之后并将其连接起来?

您不必连接它。只需继续阅读文件并存储行,直到到达想要更改的行。进行更改,将文件的其余部分作为一个字符串读取,然后按顺序写入所有先前读取的行。

它看起来像这样:

local hFile = io.open(..., "r") --Reading.
local lines = {}
local restOfFile
local lineCt = 1
for line in hFile:lines() do
  if(lineCt == ...) then --Is this the line to modify?
    lines[#lines + 1] = ModifyLine(line) --Change old line into new line.
    restOfFile = hFile:read("*a")
    break
  else
    lineCt = lineCt + 1
    lines[#lines + 1] = line
  end
end
hFile:close()

hFile = io.open(..., "w") --write the file.
for i, line in ipairs(lines) do
  hFile:write(line, "\n")
end
hFile:write(restOfFile)
hFile:close()