跳到主要内容

替换行区间内容 (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