Перейти к основному содержимому

Чтение файла в массив строк (LCC.web_file.get_lines)

Сигнатура​

lines, err = LCC.web_file.get_lines(path, timeout?)

Параметры​

  • path
    Строка, путь читаемого файла
  • timeout
    Число, необязательный тайм-аут запроса (секунды), по умолчанию 60

Возвращаемое значение​

  • lines
    Таблица, массив строк содержимого файла (переводы строк приведены к \n); при сбое — nil
  • err
    Строка или nil, описание ошибки при сбое

Описание​

Читает весь файл и разбивает его на массив строк.
Перед чтением \r\n приводится к \n.

Сочетание чтения и записи​

Если файл заканчивается переводом строки, 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 lines, err = LCC.web_file.get_lines("/配置/list.txt")
if not lines then
error(err)
end
print("共有", #lines, "行")