Ir para o conteúdo principal

Ler um arquivo como um array de linhas (LCC.web_file.get_lines)

Declaração​

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

Parâmetros​

  • path
    Tipo string; caminho do arquivo a ler
  • timeout
    Tipo number, opcional; tempo limite da solicitação (em segundos), padrão 60

Valor de retorno​

  • lines
    Tipo table; array formado pelo conteúdo do arquivo linha a linha (com o caractere de nova linha unificado para \n), ou nil em caso de falha
  • err
    Tipo string ou nil; descrição do erro em caso de falha

Descrição​

Lê todo o conteúdo do arquivo e o divide em um array por linha.
Antes da leitura, converte \r\n uniformemente para \n.

Combinar leituras e escritas​

Quando um arquivo termina com uma quebra de linha, get_lines preserva a string vazia produzida pela divisão no final. Por exemplo, o texto de duas linhas "A\nB\n" retorna {"A", "B", ""}; passar esse array para set_range_lines(path, 1, lines) grava três linhas, sendo a última vazia.

Para ler e substituir conteúdo por número de linha, combine get_range_lines com set_range_lines. Para ler, modificar e sobrescrever o arquivo inteiro, combine get_lines com set_lines. set_lines sobrescreve o arquivo inteiro e não é adequado para substituições parciais.

Nas duas combinações, a leitura e a escrita são requisições independentes, portanto a sequência completa de leitura, modificação e escrita não é atômica. Se houver escritas concorrentes, coordene o acesso para evitar sobrescrever alterações feitas após a leitura.

Exemplo​

local lines, err = LCC.web_file.get_lines("/配置/list.txt")
if not lines then
error(err)
end
print("共有", #lines, "行")