Sustituir el contenido de un intervalo de líneas (LCC.web_file.set_range_lines)
Declaración
ok, replaced_or_err = LCC.web_file.set_range_lines(path, start_line, lines, timeout?)
Parámetros
- path
Tipo string; ruta del archivo de destino - start_line
Tipo numérico; número de línea inicial; los positivos comienzan en1, los negativos cuentan desde el final (-1es la última línea) y0indica después de la última línea - lines
Tipo table; array de líneas de contenido nuevo - timeout
Tipo numérico, opcional; tiempo de espera de la solicitud (segundos), predeterminado60
Valores devueltos
- ok
Tipo booleano; devuelvetruesi tiene éxito yfalsesi falla - replaced_or_err
Tipo table o string; si tiene éxito, devuelve el array de contenido de las líneas originales sustituidas; si falla, devuelve la descripción del error
Descripción
Sobrescribe varias líneas en la posición indicada.
Cada cadena vacía del array representa una línea vacía, también al final; por ejemplo,{"Contenido nuevo", ""}sustituye dos líneas.
El array vacío{}no contiene líneas de sustitución y es distinto de un array con una cadena vacía,{""}.
Consulta la descripción de los parámetros anterior para conocer las reglas de numeración.
Si el número de línea inicial supera el contenido existente, se añaden automáticamente líneas vacías intermedias.
Si tiene éxito pero no sobrescribe ninguna línea existente, devuelve un array vacío{}.
El contenido anterior devuelto puede utilizarse para registrar la operación o revertirla.
Combinar lecturas y escrituras
Cuando un archivo termina con un salto de línea, get_lines conserva la cadena vacía que resulta de la división al final. Por ejemplo, el texto de dos líneas "A\nB\n" devuelve {"A", "B", ""}; al pasar este array a set_range_lines(path, 1, lines), se escriben tres líneas, con la última vacía.
Para leer y sustituir contenido por número de línea, combina get_range_lines con set_range_lines. Para leer, modificar y sobrescribir todo el archivo, combina get_lines con set_lines. set_lines sobrescribe el archivo entero y no es adecuado para sustituciones parciales.
En ambas combinaciones, la lectura y la escritura son peticiones independientes, por lo que la secuencia completa de lectura, modificación y escritura no es atómica. Si hay escrituras concurrentes, coordina el acceso para evitar sobrescribir cambios realizados después de la lectura.
Ejemplo
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