Как отредактировать определенную строку текста в файле через lua? - PullRequest
1 голос
/ 19 февраля 2012

Я создаю приложение в Corona SDK, которое читает файл .txt с SD-карты, представляет данные в более чистом виде, а затем позволяет редактировать их. Пример текста:

#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 и страницу API Corona, но, похоже, ничего не имеет того, что я ищу. Я собираюсь прочитать все файлы до этой строки и после этой строки и объединить их все?

1 Ответ

1 голос
/ 19 февраля 2012

Должен ли я прочитать весь файл до этой строки и после этой строки и объединить все?

Вам не нужно объединять это. Просто продолжайте читать файл и сохранять строки, пока не дойдете до строки, которую хотите изменить. Внесите изменения, прочитайте весь оставшийся файл как одну строку, а затем запишите все ранее прочитанные строки по порядку.

Это будет выглядеть примерно так:

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()
...