2012-02-18 5 views
1

저는 SD 카드에서 .txt 파일을 읽고, 더 깨끗한 형식으로 데이터를 표시 한 후 Corona SDK를 편집 할 수있는 응용 프로그램을 만들고 있습니다. 몇 가지 예를 들어 텍스트 :lua를 통해 파일의 특정 텍스트 줄을 어떻게 편집합니까?

#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 

는 기본적으로 나는 순수 루아와 함께, 파일에서 텍스트의 특정 라인을 편집, 제자리에 다시 넣어 할 수 있어야합니다. 예를 들어 파일의 다른 내용을 변경하지 않고 208=No208=Yes으로 변경하려고 할 수 있습니다.

이미이 사이트, Google 및 Corona의 API 페이지를 검색했지만 찾은 바가없는 것으로 보입니다. 내가 그 라인까지 그리고 그 라인 다음에 모든 파일을 읽고 그것을 모두 연결해야만 할 것인가?

답변

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() 
+0

을하지만 그것이 무엇이 있다면, 그게 무엇이입니다. 감사. –

관련 문제