Remplacer une plage de lignes (LCC.web_file.set_range_lines)
Déclaration
ok, replaced_or_err = LCC.web_file.set_range_lines(path, start_line, lines, timeout?)
Paramètres
- path
Type chaîne, chemin du fichier cible - start_line
Type numérique, numéro de départ ; les nombres positifs commencent à1, les nombres négatifs comptent depuis la fin (-1est la dernière ligne) et0désigne la position après la dernière ligne - lines
Type table, tableau des nouvelles lignes - timeout
Type numérique, facultatif ; délai d'attente de la demande en secondes,60par défaut
Valeurs de retour
- ok
Type booléen ; renvoietrueen cas de succès etfalsedans le cas contraire - replaced_or_err
Type table ou chaîne ; en cas de succès, tableau du contenu des anciennes lignes remplacées ; description de l'erreur en cas d'échec
Description
Remplace plusieurs lignes à l'emplacement indiqué.
Chaque chaîne vide du tableau représente une ligne vide, y compris à la fin ; par exemple,{"Nouveau contenu", ""}remplace deux lignes.
Un tableau vide{}ne contient aucune ligne de remplacement et se distingue d'un tableau contenant une chaîne vide{""}.
Les règles des numéros de ligne sont décrites dans les paramètres ci-dessus.
Si le numéro de départ dépasse le nombre de lignes existantes, complète automatiquement l'intervalle par des lignes vides.
Une réussite qui ne remplace aucune ligne existante renvoie une table vide{}.
L'ancien contenu renvoyé peut servir à la journalisation ou au retour arrière.
Associer lecture et écriture
Lorsqu’un fichier se termine par un saut de ligne, get_lines conserve la chaîne vide issue du découpage à la fin. Par exemple, le texte de deux lignes "A\nB\n" renvoie {"A", "B", ""} ; passer ce tableau à set_range_lines(path, 1, lines) écrit trois lignes, dont la dernière est vide.
Pour lire et remplacer du contenu par numéro de ligne, associez get_range_lines à set_range_lines. Pour lire, modifier et écraser le fichier entier, associez get_lines à set_lines. set_lines écrase tout le fichier et ne convient pas aux remplacements partiels.
Dans les deux cas, la lecture et l’écriture sont des requêtes distinctes : la séquence complète de lecture, modification et écriture n’est donc pas atomique. En cas d’écritures concurrentes, coordonnez les accès pour éviter d’écraser des modifications effectuées après la lecture.
Exemple
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