Thay thế nội dung một khoảng dòng (LCC.web_file.set_range_lines)
Khai báo
ok, replaced_or_err = LCC.web_file.set_range_lines(path, start_line, lines, timeout?)
Tham số
- path
Chuỗi, đường dẫn tệp đích - start_line
Số, số dòng bắt đầu; số dương tính từ1, số âm đếm ngược từ cuối (-1là dòng cuối),0biểu thị vị trí sau dòng cuối - lines
Bảng, mảng dòng chứa nội dung mới - timeout
Số, tùy chọn; thời gian chờ yêu cầu (giây), mặc định là60
Giá trị trả về
- ok
Boolean, làtruekhi thành công,falsekhi thất bại - replaced_or_err
Bảng hoặc chuỗi; khi thành công trả về mảng nội dung các dòng cũ đã bị thay thế, khi thất bại trả về mô tả lỗi
Mô tả
Ghi đè nhiều dòng văn bản tại vị trí chỉ định.
Mỗi chuỗi rỗng trong mảng biểu thị một dòng trống, kể cả ở cuối mảng; ví dụ,{"Nội dung mới", ""}thay thế hai dòng.
Mảng rỗng{}không chứa dòng thay thế nào và khác với mảng chứa một chuỗi rỗng{""}.
Xem quy tắc số dòng trong phần tham số ở trên.
Nếu số dòng bắt đầu vượt quá số dòng hiện có, hệ thống sẽ tự động chèn các dòng trống ở giữa.
Khi thành công nhưng không ghi đè dòng hiện có nào, trả về bảng rỗng{}.
Nội dung cũ được trả về có thể dùng để ghi nhật ký hoặc khôi phục.
Ghép cặp thao tác đọc và ghi
Khi tệp kết thúc bằng ký tự xuống dòng, get_lines giữ lại chuỗi rỗng sinh ra khi tách ở cuối. Ví dụ, văn bản hai dòng "A\nB\n" trả về {"A", "B", ""}; truyền mảng này cho set_range_lines(path, 1, lines) sẽ ghi ba dòng, trong đó dòng cuối là dòng trống.
Để đọc và thay thế nội dung theo số dòng, hãy dùng cặp get_range_lines và set_range_lines. Để đọc, sửa và ghi đè toàn bộ tệp, hãy dùng cặp get_lines và set_lines. set_lines ghi đè toàn bộ tệp nên không phù hợp để thay thế một phần nội dung.
Trong cả hai cặp, đọc và ghi là các yêu cầu riêng biệt, nên toàn bộ quá trình đọc, sửa rồi ghi không phải là một thao tác nguyên tử. Khi có các thao tác ghi đồng thời, cần điều phối truy cập để tránh ghi đè những thay đổi phát sinh sau lần đọc.
Ví dụ
local ok, old_lines_or_err = LCC.web_file.set_range_lines("/cấu-hình/list.txt", 2, {"Beta", "Gamma"})
if ok then
print("Nội dung gốc:", table.concat(old_lines_or_err, ","))
end