替換行區間內容 (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