줄 구간 내용 바꾸기 (LCC.web_file.set_range_lines)
선언
ok, replaced_or_err = LCC.web_file.set_range_lines(path, start_line, lines, timeout?)
매개변수
- path
문자열형. 대상 파일 경로 - start_line
숫자형. 시작 줄 번호. 양수는1부터 세고, 음수는 끝에서 역순으로 셉니다(-1은 마지막 줄).0은 마지막 줄 다음을 나타냅니다 - lines
테이블형. 새 내용의 줄 배열 - timeout
숫자형, 선택 사항. 요청 제한 시간(초), 기본값은60
반환 값
- ok
불리언형. 성공 시true, 실패 시false - replaced_or_err
테이블 또는 문자열형. 성공 시 교체된 원래 줄 내용의 배열, 실패 시 오류 설명 반환
설명
지정한 위치에서 여러 줄의 텍스트를 덮어씁니다.
배열의 빈 문자열은 빈 줄을 나타내며, 배열 끝의 빈 문자열도 기록됩니다. 예를 들어{"새 내용", ""}는 두 줄을 바꿉니다.
빈 배열{}는 교체할 줄을 포함하지 않으며, 빈 문자열 하나를 포함하는 배열{""}와 다릅니다.
줄 번호 규칙은 위의 매개변수 설명을 참조하세요.
시작 줄 번호가 기존 줄 수를 벗어나면 중간을 빈 줄로 자동 채웁니다.
성공했지만 기존 줄을 덮어쓰지 않은 경우 빈 테이블{}를 반환합니다.
반환된 이전 내용은 기록하거나 롤백하는 데 사용할 수 있습니다.
읽기와 쓰기 함수 조합
파일이 줄바꿈 문자로 끝나면 get_lines는 마지막 분할에서 생긴 빈 문자열을 유지합니다. 예를 들어 두 줄의 텍스트 "A\nB\n"는 {"A", "B", ""}를 반환합니다. 이 배열을 set_range_lines(path, 1, lines)에 전달하면 마지막 빈 줄을 포함해 세 줄이 기록됩니다.
줄 번호를 기준으로 내용을 읽고 바꾸려면 get_range_lines와 set_range_lines를 함께 사용하세요. 파일 전체를 읽고 수정한 뒤 덮어쓰려면 get_lines와 set_lines를 함께 사용하세요. set_lines는 파일 전체를 덮어쓰므로 일부 내용만 바꾸는 용도로는 적합하지 않습니다.
두 조합 모두 읽기와 쓰기는 별도의 요청이므로 전체 읽기, 수정, 쓰기 과정은 원자적 연산이 아닙니다. 동시에 쓰기 작업이 발생하는 경우 읽기 이후의 변경 사항을 덮어쓰지 않도록 접근을 조율해야 합니다.
예시
local ok, old_lines_or_err = LCC.web_file.set_range_lines("/설정/list.txt", 2, {"Beta", "Gamma"})
if ok then
print("원래 내용:", table.concat(old_lines_or_err, ","))
end