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