跳至主要內容

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